J’ai une série d’entrées EditText et j’aimerais que lorsque l’utilisateur clique sur la touche Entrée, il passe au prochain Editext. Je sais comment faire cela un à la fois, mais y a-t-il un moyen de dire à tous les contrôles edittext d’utiliser la même fonction qui vérifie la saisie de la clé et fait avancer le curseur. Cela semble un peu fou d’avoir une fonction pour chacun des EditTexts
Beaucoup plus simple que de renifler des clés: essayez de définir android:singleLine="true"
et android:imeOptions="actionNext"
(au moins pour les android:imeOptions="actionNext"
à une seule ligne). Lisez plus dans la documentation Android pour TextView.
Mise à jour: singleLine
est maintenant obsolète , mais vous pouvez le laisser de côté. C’est le comportement par défaut pour le texte modifiable, à condition que vous ne définissiez pas explicitement android:inputType="textMultiLine"
, et que inputType
remplace le remplacement suggéré de maxLines="1"
pour le texte éditable.
Pour une alternative ou une approche plus récente de la réponse donnée par Yoni …
Comme singleLine
est considéré comme obsolète , nous pouvons définir manuellement sur android:maxLines="1"
avec android:inputType="text"
.
Petite explication:
android:inputType="text"
pour traiter spécifiquement l’entrée comme du texte brut . android:maxLines="1"
pour définir les lignes maximales du texte à 1 (comme il le suggère). Utiliser maxLines="1"
seul ne produira aucun effet, mais inputType="text"
seul peut aussi fonctionner, comme le mentionne Adam (bien que je n’ai pas vérifié).
Ajouter
android:inputType="text"
en XML est juste suffisant. Lorsque vous ne définissez pas le type d’entrée, il passe à la ligne suivante.
Vous pouvez essayer d’append un écouteur d’événement unique à tous vos objects editText:
OnKeyListener myKeyListener = new OnKeyListener() { @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2) { // TODO: do what you got to do return false; } }; editText1.setOnKeyListener(myKeyListener); editText2.setOnKeyListener(myKeyListener); editText3.setOnKeyListener(myKeyListener);
Appliquez ce style personnalisé dans styles.xml
puis définissez-le dans EditText comme ceci
style="@style/SingleLineText"
Ajoutez les lignes suivantes dans EditText
android:singleLine="true" android:maxLines="1"