imeOptions “actionNext” programmgesteuert - wie springe ich zum nächsten Feld?

91

In Layout-XML kann angegeben werden, android:imeOptions="actionNext"welche NextSchaltfläche in der virtuellen Tastatur hinzugefügt werden soll, und durch Klicken darauf wird der Fokus zum nächsten Feld gesprungen.

Wie geht das programmgesteuert vor - z. B. basierend auf einem Ereignisauslöserfokus, um zum nächsten Feld zu gelangen?

Laimoncijus
quelle

Antworten:

190

Sie können die Konstanten aus der EditorInfo-Klasse für die IME-Optionen verwenden. mögen,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Firewall_Sudhan
quelle
ja sonst fügt es eine neue Zeile ein und springt dazu =)
Ilker Baltaci
2
Wie beantwortet dies die Frage des OP? Dies springt nicht automatisch zum nächsten Feld.
Hitmaneidos
27

Suchen Sie nach dem nächsten fokussierbaren Feld und rufen Sie es auf requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
Justin
quelle
2
Dies ist keine echte Antwort in Bezug auf den Titel dieser Frage, aber technisch eine gültige Antwort. Die folgende Antwort ist angemessener.
Sean Glover
4
@ SeanGlover Sie sollten niemals Wörter wie unten verwenden, da sich die Position der Antworten ständig ändert.
Nike15
19

Nur Vorschlag, wenn Sie verwenden

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Es funktioniert nicht. Stellen Sie sicher, dass Ihr EditText eine einzelne Zeile verwendet.

Z.B:

       editTextSample.setSingleLine();
ziniestro
quelle
1
Vielen Dank. Dies sollte die akzeptierte Antwort sein. Rufen Sie einfach setSingleLine () VOR setImeOptions auf.
Herman
8

Neben den in der virtuellen QWERTYTastatur verfügbaren Standardtasten müssen immer zusätzliche Tasten hinzugefügt werden .

Verwenden von 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

Eine EditorInfoKlasse ist am nützlichsten, wenn Sie mit jeder Art von Benutzereingabe in Ihrer Android-Anwendung umgehen müssen.

IME_ACTION_DONE: Diese Aktion führt eine "erledigt" -Operation aus, bei der nichts eingegeben werden kann, und der IME wird geschlossen.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Weitere Informationen finden Sie unter http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html

IntelliJ Amiya
quelle
1

Der Kotlin-Anhänger

editText.imeOptions = EditorInfo.IME_ACTION_DONE
Kuzdu
quelle
0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Ich löse das Problem mit einer einzelnen Zeile und gehe zum nächsten editText, wenn du auf die Eingabetaste klickst

Handelika
quelle
0

In meinem Fall setzen Sie eine imeOptions, um das Problem zu beheben.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
Mete
quelle
0

Sie können dies tun, indem Sie

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

oder

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

Aber ... Sie müssen verstehen, dass Sie festlegen müssen, wenn Sie Filter für edittext verwenden

edittext.setSingleLine()
Kishan Solanki
quelle