2010-08-10 19 views
10

Supponendo che un utente abbia scritto del testo in un EditText e successivamente toccato da qualche altra parte sullo schermo, che ha causato la modifica della posizione del cursore: Come si può determinare la nuova posizione del cursore?Posizione del cursore di EditText

risposta

24

La versione semplice:

myEditText.getSelectionStart(); 

Se si vuole reagire a un evento che si può provare

myEditText.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     // view is myEditText here 
    } 
}); 

event permette di distinguere tra preme e rilascia.

EditText ha anche uno setOnClickListener() che potrebbe valere la pena di guardare.

MODIFICA: Ho dimenticato di menzionare onSelectionChanged(int selStart, int selEnd) dove selEnd è uguale a inizio se la posizione è cambiata.

+2

per chiarire: OnSelectionChanged() deve essere sottoposto a override in sottoclassi EditText per essere utile. Gli eventi OnTouch si verificano solo quando l'utente tocca letteralmente lo schermo. Gli eventi OnClick possono essere attivati ​​quando l'utente tocca lo schermo o tramite determinati input fisici, ad es. Centro D-pad, click trackball, ecc. – greg7gkb

2

modo migliore e più sicuro sta usando TextWatcher

 @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
       int cursorIndex = start + 1; 
     } 
Problemi correlati