imeOptions „actionNext” programowo - jak przejść do następnego pola?


92

W layoucie XML można określić, android:imeOptions="actionNext"który Nextprzycisk dodaje w wirtualnej klawiaturze i po kliknięciu na niego - fokus przeskakuje do następnego pola.

Jak to zrobić programowo - np. W oparciu o fokus wyzwalacza zdarzenia, aby przejść do następnego pola?

Odpowiedzi:


192

W opcjach edytora IME można użyć stałych z klasy EditorInfo. lubić,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

tak, w przeciwnym razie wstawia nową linię i skacze do niej =)
Ilker Baltaci

2
Jak to odpowiada na pytanie PO? Nie powoduje to automatycznego przejścia do następnego pola.
hitmaneidos

27

Wyszukaj następne pole, które można zaznaczyć, i wywołaj requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();

2
To nie jest prawdziwa odpowiedź w odniesieniu do tytułu tego pytania, ale jest to technicznie poprawna odpowiedź. Poniżej odpowiedź jest bardziej odpowiednia.
Sean Glover,

4
@SeanGlover nigdy nie powinieneś używać słów takich jak poniżej, ponieważ pozycja odpowiedzi ciągle się zmienia.
Nike15

20

Tylko sugestia, jeśli używasz

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

to nie działa, upewnij się, że Twój EditText używa jednej linii.

Na przykład:

       editTextSample.setSingleLine();

1
Dzięki. To powinna być akceptowana odpowiedź. Po prostu wywołaj metodę setSingleLine () PRZED setImeOptions.
Herman

8

Zawsze istnieje konieczność dodania dodatkowych klawiszy poza domyślnymi klawiszami dostępnymi na wirtualnej QWERTYklawiaturze.

Korzystanie z XML

<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>

By Programmatic Way

EditorInfoJest najbardziej użyteczna klasa gdy masz do czynienia z wszelkiego rodzaju wprowadzanych przez użytkownika w aplikacji Android.

IME_ACTION_DONE: Ta akcja wykonuje operację „gotową” bez wprowadzania danych, a edytor IME zostanie zamknięty.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Więcej informacji można znaleźć pod adresem http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html


1

Wisiorek kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE

0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Rozwiązuję problem upewniając się za pomocą jednej linii i przechodząc do następnego editText po kliknięciu enter


0

W moim przypadku ustaw imeOptions, aby rozwiązać problem.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT

0

Możesz to zrobić przez

edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button

lub

edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button

Ale ... musisz zrozumieć, że jeśli używasz filtrów dla edittext, musisz ustawić

edittext.setSingleLine()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.