imeOptions «actionNext» par programmation - comment passer au champ suivant?

91

Dans le format XML, il est possible de spécifier android:imeOptions="actionNext"quel Nextbouton ajoute dans le clavier virtuel et en cliquant dessus, le focus passe au champ suivant.

Comment faire cela par programme - par exemple sur la base d'un focus de déclenchement d'événement pour passer au champ suivant?

Laimoncijus
la source

Réponses:

191

Vous pouvez utiliser les constantes de la classe EditorInfo pour les options IME. comme,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Pare-feu_Sudhan
la source
oui sinon il insère une nouvelle ligne et y saute =)
Ilker Baltaci
2
Comment cela répond-il à la question du PO? Cela ne passe pas automatiquement au champ suivant.
hitmaneidos
27

Recherchez le prochain champ focalisable et ensuite invoquez requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
Justin
la source
2
Ce n'est pas une vraie réponse en référence au titre de cette question, mais c'est techniquement une réponse valide. La réponse ci-dessous est plus appropriée.
Sean Glover le
4
@SeanGlover vous ne devriez jamais utiliser des mots comme ci - dessous car la position des réponses ne cesse de changer.
Nike15
19

Juste une suggestion, si vous utilisez

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

cela ne fonctionne pas, assurez-vous que votre EditText utilise une seule ligne.

Par exemple:

       editTextSample.setSingleLine();
ziniestro
la source
1
Merci. Cela devrait être la réponse acceptée. Appelez simplement setSingleLine () AVANT setImeOptions.
Herman
8

Il est toujours nécessaire d'ajouter des touches supplémentaires en dehors des touches par défaut disponibles dans le QWERTYclavier virtuel .

Utilisation de 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

Une EditorInfoclasse est la plus utile lorsque vous devez gérer n'importe quel type d'entrée utilisateur dans votre application Android.

IME_ACTION_DONE: Cette action effectue une opération «terminé» pour que rien ne soit entré et l'IME sera fermé.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Pour plus d'informations, vous pouvez visiter http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html

IntelliJ Amiya
la source
1

Le pendentif kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE
kuzdu
la source
0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Je résolve le problème, assurez-vous avec une seule ligne et passez au prochain editText lorsque vous cliquez sur Entrée

Handelika
la source
0

Dans mon cas, définissez un imeOptions pour résoudre le problème.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
Infliger
la source
0

Vous pouvez le faire en

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

ou

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

Mais ... vous devez comprendre que si vous utilisez des filtres pour edittext, vous devez définir

edittext.setSingleLine()
Kishan Solanki
la source