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?

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);

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();

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();

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


1

Der Kotlin-Anhänger

editText.imeOptions = EditorInfo.IME_ACTION_DONE

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


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

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()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.