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.