web-dev-qa-db-fra.com

Android edittext key return va au texte suivant

J'ai une série d'entrées EditText et j'aimerais bien que lorsque l'utilisateur clique sur la touche entrée, il passe à la prochaine Editext. Je sais comment procéder un à un, mais existe-t-il un moyen d'indiquer à tous les contrôles edittext d'utiliser la même fonction qui vérifie l'entrée de la clé et fait avancer le curseur. Il semble un peu fou d'avoir une fonction pour chacun des EditTexts

40
Mark Worsnop

Beaucoup plus simple que de rechercher des clés: essayez de définir Android:singleLine="true" et Android:imeOptions="actionNext" (au moins pour les vues de texte avec une seule ligne). Plus d'informations dans Android documentation pour TextView.

Update:singleLine est obsolète } maintenant, mais vous pouvez le laisser. C'est le comportement par défaut du texte éditable tant que vous ne définissez pas explicitement Android:inputType="textMultiLine", et inputType annule le remplacement suggéré par singleLine de maxLines="1" pour le texte éditable. 

93
Yoni Samlan

Pour une alternative ou une approche plus récente de la réponse donnée par Yoni ...

Étant donné que singleLine est considéré deprecated , nous pouvons définir manuellement Android:maxLines="1" avec Android:inputType="text".

Petite explication:

  • Nous utilisons Android:inputType="text" pour traiter spécifiquement l'entrée en tant que texte brut .
  • Et nous utilisons Android:maxLines="1" pour définir le nombre maximal de lignes du texte sur 1 (comme il est suggéré).

Utiliser maxLines="1" seul ne causera aucun effet, mais inputType="text" seul peut également fonctionner, comme le mentionne Adam (bien que je n’aie pas vérifié cela).

7
edmundo096

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.

4
Adam Staszak

Vous pouvez essayer d'ajouter un seul écouteur d'événement à tous vos objets 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);
2
Adukra

Appliquer ce style personnalisé dans styles.xml

<style name="SingleLineText">
    <item name="Android:inputType">text</item>
    <item name="Android:maxLines">1</item>
</style>

puis définissez-le dans EditText comme ceci

 style="@style/SingleLineText"
0
javierZanetti

Ajouter les lignes suivantes dans EditText 

 Android:singleLine="true"
 Android:maxLines="1"
0
Sudhir singh