2011-10-28 20 views
16

Sto sostituendo del testo in un EditText, quindi voglio spostare il cursore alla fine dell'input di testo corrente. Sembra funzionare - quando ricomincio a scrivere, il cursore sembra essere alla fine dell'EdizionText, ma non lampeggia/lampeggia più. Devo toccare nuovamente EditText perché il cursore inizi a lampeggiare di nuovo. Sto facendo sbagliato ?:Sposta il cursore alla fine di EditText?

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

Grazie

risposta

41

Un trucco che ho usato stava tramontando il testo su "" e poi aggiungendo l'intera stringa che volevo.

cioè

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

Questo sembra per posizionare il cursore nel posto giusto per me.

+0

Purtroppo non riesco a ripristinare tutti i test perché ho campate Devo mantenere. Tuttavia, sembra che il cursore stia ancora lampeggiando per te dopo aver fatto quanto sopra? – user291701

+0

Sì, questa soluzione ha funzionato per me. – tarrant

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

secondo approccio

C'è una funzione chiamata accodamento per ediitext che aggiunge il valore di stringa di valore EditText corrente e posiziona il cursore alla fine del valore. È possibile avere il valore stringa come valore corrente di ediitext stesso e chiamare append();

myedittext.append("current_this_edittext_string"); 
+1

Grazie. Entrambi gli approcci sembrano funzionare per me. –

+0

imo il primo approccio è pulito – Pooya

+0

Il primo approccio funziona! – Yashovardhan

0

Per lasciando l'utente cambia tutto il testo all'interno della Modifica testo (rendendo più facile da usare)

editText.selectAll(); //user can delete the whole text at one go 
editText.requestFocus(); 
Problemi correlati