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?

Laimoncijus
źródło

Odpowiedzi:

192

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

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Firewall_Sudhan
źródło
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();
Justin
źródło
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();
ziniestro
źródło
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

IntelliJ Amiya
źródło
1

Wisiorek kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE
kuzdu
źródło
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

Handelika
źródło
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
Zmierzyć
źródło
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()
Kishan Solanki
źródło