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?

Réponses:


191

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

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

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

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

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


1

Le pendentif kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE

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


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

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()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.