2011-10-28 15 views
16

Zamieniam trochę tekstu w EditText, a następnie chcę przenieść kursor na koniec bieżącego wprowadzania tekstu. Wygląda na to, że działa - po ponownym rozpoczęciu pisania kursor wydaje się znajdować na końcu EditText, ale już nie miga/miga. Muszę ponownie dotknąć EditText, aby kursor znów zaczął migać. Robię to źle ?:Przenieś kursor na koniec EditText?

editText.setSelection(editText.getText().length()-1); 

Dzięki

Odpowiedz

41

Jeden trick Kiedyś było ustawienie tekstu na „”, a następnie dodanie cały ciąg chciałem.

tj

String newtext = editText.getText().toString() + "the new text"; 
editText.setText(""); 
editText.append(newtext); 

Wydaje się, aby umieścić kursor w odpowiednim miejscu dla mnie.

+0

Niestety nie mogę zresetować cały test, bo mam przęseł Muszę to utrzymać. Czy po wykonaniu powyższych czynności kursor wydaje się migać? – user291701

+0

Tak, to rozwiązanie sprawdziło się u mnie. – tarrant

15
EditText et = (EditText)findViewById(R.id.inbox); 
et.setSelection(et.getText().length()); 

Drugie podejście

Istnieje funkcja nazywa Dołącz do ediitext który dołącza ciąg znaków do wartości bieżącej EditText i umieszcza kursor na końcu wartości. Możesz mieć wartość ciągu jako aktualną wartość ediitext i wywołanie append();

myedittext.append("current_this_edittext_string"); 
+1

Dziękuję. Oba podejścia wydają się działać dla mnie. –

+0

imo pierwsze podejście jest miłe – Pooya

+0

Pierwsze podejście działa! – Yashovardhan

0

Dla pozwalając użytkownikowi zmienić cały tekst w edycji tekstu (co bardziej przyjazny dla użytkownika)

editText.selectAll(); //user can delete the whole text at one go 
editText.requestFocus(); 
Powiązane problemy