Są dwa EditText
, podczas ładowania strony tekst jest ustawiany w pierwszym EditText, więc teraz kursor będzie w miejscu początkowym EditText
, chcę ustawić pozycję kursora w drugim EditText, który nie zawiera danych. Jak to zrobić?
235
Odpowiedzi:
Gdzie pozycja jest int:
źródło
Zrobiłem w ten sposób, aby ustawić pozycję kursora na końcu tekstu po programowej aktualizacji tekstu EditText tutaj,
etmsg
to EditTextźródło
etmsg.setText("my new text..."); etmsg.setSelection(etmsg.length());
Jak ustawić pozycję kursora EditText w systemie Android
Poniżej kodu ustaw kursor na Rozpocznij za
EditText
:Poniższy kod jest Ustaw kursor do końca z
EditText
:Kursor pod kodem jest ustawiony po pozycji 2 znaku:
źródło
Jest tylko jedna pozycja w pustym EditText, to jest
setSelection(0)
.Czy miałeś na myśli, że chcesz skupić się na tym,
EditText
kiedy zaczyna się twoja aktywność? W takim przypadku jest torequestFocus()
źródło
użyj poniższej linii
e2
edytuj tekst Nazwa obiektuźródło
Niech editText2 to twój drugi widok EditText. Następnie umieść następujący fragment kodu w onResume ()
lub umieścić
w układzie xml drugiego widoku EditText.
źródło
jakiś czas edycji tekstu kursor donot przychodzi w konkretnej pozycji, jeśli używamy bezpośrednio
editText.setSelection(position);
. W takim przypadku możesz spróbowaćźródło
Jeśli chcesz umieścić kursor w określonej pozycji na EditText, możesz użyć:
Dodatkowo istnieje możliwość ustawienia początkowej i końcowej pozycji, aby programowo zaznaczyć tekst w następujący sposób:
Pamiętaj, że ustawienie zaznaczenia może być trudne, ponieważ możesz umieścić kursor przed znakiem lub po nim, poniższy rysunek wyjaśnia, w jaki sposób działa indeksowanie w tym przypadku:
Jeśli więc chcesz kursor na końcu tekstu, po prostu ustaw go na
yourEditText.length()
.źródło
setSelection(int index)
Metoda inEdittext
powinna pozwolić ci to zrobić.źródło
dla przypomnienia: jeśli używasz
edittext.setSelection()
do ustawiania kursora i NIE działa on podczas konfigurowaniaalertdialog
na przykład, upewnij się, że ustawiłeśselection()
PO utworzeniu okna dialogowegoprzykład:
źródło
Ten kod pomoże ci pokazać kursor na ostatniej pozycji edycji tekstu.
źródło
Pamiętaj, zadzwoń
requestFocus()
wcześniej,setSelection
aby edytować tekst.źródło
źródło
Jeśli chcesz ustawić kursor po
n
znaku od prawej do lewej, musisz to zrobić w ten sposób.Jeśli tekst edittext lubi
i chcesz przesunąć kursor na 6. pozycji z prawej
Następnie przesunie kursor w
źródło
źródło
źródło
Ustaw kursor na wiersz i kolumnę
Możesz użyć następującego kodu, aby uzyskać pozycję w swoim EditText, która odpowiada pewnemu wierszowi i kolumnie. Następnie można użyć
editText.setSelection(getIndexFromPos(row, column))
do ustawienia pozycji kursora. Można wykonać następujące wywołania metody:getIndexFromPos(x, y)
Przejdź do kolumny y wiersza xgetIndexFromPos(x, -1)
Przejdź do ostatniej kolumny linii xgetIndexFromPos(-1, y)
Przejdź do kolumny y ostatniego wierszagetIndexFromPos(-1, -1)
Przejdź do ostatniej kolumny ostatniego wierszaObsługiwane są wszystkie granice wierszy i kolumn; Wprowadzenie kolumny większej niż długość linii spowoduje zwrócenie pozycji w ostatniej kolumnie linii. Wprowadzenie wiersza większego niż liczba wierszy EditText spowoduje przejście do ostatniego wiersza. Powinien być wystarczająco niezawodny, ponieważ został mocno przetestowany.
Odpowiedź na to pytanie była już udzielona, ale myślałem, że ktoś może chcieć to zrobić zamiast tego.
Działa poprzez zapętlanie każdego znaku, zwiększając liczbę linii za każdym razem, gdy znajdzie separator linii. Gdy liczba wierszy jest równa żądanej linii, zwraca bieżący indeks + kolumnę lub indeks końca linii, jeśli kolumna jest poza zakresem. Możesz również ponownie użyć tej
getTrueLineCount()
metody, w przeciwieństwie do liczenia wierszy, ignorując zawijanie tekstuTextView.getLineCount()
.źródło
W kotlin możesz utworzyć funkcję rozszerzenia taką jak ta:
a następnie po prostu zadzwoń
myEditText.placeCursorAtLast()
źródło
Jeśli chcesz ustawić pozycję kursora w EditText? spróbuj tych poniżej kodu
źródło
Jak rozwiązać problem z pozycją kursora, który automatycznie przesuwa się do ostatniej pozycji po sformatowaniu w usłudze US Mobile, takiej jak (xxx) xxx-xxxx w Androidzie.
Zdefiniuj poniższą metodę dla dowolnej Activityclass w moim przypadku Nazwa działania to AppUtil i uzyskaj do niej dostęp globalnie
A jeśli chcesz ustawić dowolną konkretną pozycję
źródło
Uważam, że najprostszym sposobem na to jest po prostu wypełnienie.
Powiedz w sekcji edycyjnej xml, dodaj androida: paddingLeft = "100dp" Spowoduje to przesunięcie pozycji początkowej kursora 100dp w prawo od lewego końca.
W ten sam sposób możesz użyć Androida: paddingRight = "100dp" Spowoduje to przesunięcie pozycji końcowej kursora o 100dp w lewo od prawego końca.
Aby uzyskać więcej informacji, sprawdź ten artykuł na moim blogu : Android: Ustawianie pozycji początkowej i końcowej kursora w widżecie EditText
źródło