2010-08-10 18 views
10

Zakładając, że użytkownik zapisał jakiś tekst w obiekcie EditText, a następnie został dotknięty w innym miejscu na ekranie, co spowodowało zmianę położenia kursora: Jak określić nową pozycję kursora?Pozycja kursora EditText

Odpowiedz

24

Prosta wersja:

myEditText.getSelectionStart(); 

Jeśli chcesz reagować na zdarzenia można spróbować

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

event pozwala odróżnić prasy i wydawnictw.

EditText ma również setOnClickListener(), który może być wart obejrzenia.

EDYTOWANIE: Zapomniałem wspomnieć o onSelectionChanged(int selStart, int selEnd), gdzie selEnd jest równy selStart, jeśli zmieniła się pozycja.

+2

do wyjaśnienia: OnSelectionChanged() musi być zmienione podklasy EditText być użyteczne. Zdarzenia OnTouch zdarzają się tylko wtedy, gdy użytkownik dosłownie dotknie ekranu. Zdarzenia OnClick mogą być uruchamiane, gdy użytkownik dotknie ekranu lub poprzez określone fizyczne wejścia, np. Centrum D-pad, kliknięcie trackballa itp. – greg7gkb

2

Najlepszy i bezpieczny sposób korzysta TextWatcher

 @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
       int cursorIndex = start + 1; 
     } 
Powiązane problemy