Le retour de la clé Android edittext va au texte suivant

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:

  • Nous utilisons android:inputType="text" pour traiter spécifiquement l’entrée comme du texte brut .
  • Et nous utilisons 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"