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
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.
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:
Android:inputType="text"
pour traiter spécifiquement l'entrée en tant que texte brut .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).
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'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);
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"
Ajouter les lignes suivantes dans EditText
Android:singleLine="true"
Android:maxLines="1"