J'ai un fichier de mise en page XML assez complexe (pas vraiment). L'une des vues est un LinearLayout (v1
) avec deux enfants: un EditText (v2
) et un autre LinearLayout (v3
). Le LinearLayout enfant a à son tour un EditText (v4
) et un ImageView (v5
).
Pour EditText v2, j'ai imeOptions comme
Android:imeOptions="actionNext"
Mais lorsque je lance l'application, la variable return
du clavier ne vérifie pas la valeur next
et je souhaite la remplacer par next
. Comment puis-je résoudre ce problème?
En outre, lorsque l'utilisateur clique sur Suivant, je souhaite que le focus soit défini sur EditText v4. Est-ce que je fais ça?
Pour ceux qui ont vraiment besoin de voir du code:
<LinearLayout
Android:id="@+id/do_txt_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/col6"
Android:orientation="vertical"
Android:visibility="gone" >
<EditText
Android:id="@+id/gm_title"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="5dp"
Android:background="@drawable/coldo_text"
Android:hint="@string/enter_title"
Android:maxLines="1"
Android:imeOptions="actionNext"
Android:padding="5dp"
Android:textColor="pigc7"
Android:textSize="ads2" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="horizontal" >
<EditText
Android:id="@+id/rev_text"
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_gravity="center_vertical"
Android:layout_margin="5dp"
Android:layout_weight="1"
Android:background="@drawable/coldo_text"
Android:hint="@string/enter_msg"
Android:maxLines="2"
Android:padding="5dp"
Android:textColor="pigc7"
Android:textSize="ads2" />
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="center_vertical"
Android:background="@drawable/colbtn_r”
Android:clickable="true"
Android:onClick=“clickAct”
Android:paddingLeft="5dp"
Android:paddingRight="5dp"
Android:src="@drawable/abcat” />
</LinearLayout>
</LinearLayout>
Ajoutez simplement Android:maxLines="1" & Android:inputType="text"
à votre EditText. Ça va marcher!! :)
singleLine
est obsolète. L'ajout d'un type d'entrée (par exemple: Android:inputType="text"
) a également fonctionné pour moi.
Utiliser Android:maxLines="1"
car singleLine
est obsolète
Android:singleLine
est obsolète, il est préférable de combiner Android:maxLines="1"
avec Android:inputType="text"
. Ce serait le code:
<EditText
Android:id="@+id/editText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:inputType="text"
/>
ligne unique obsolète donc vous ajoutez ci-dessous le code je pense que inputType doit.
<EditText
Android:inputType="text"
Android:maxLines="1"
Android:imeOptions="actionNext" />
Enfin, j’ai trouvé la solution à ce problème Il suffit d’ajouter ces 3 lignes dans votre texte de mise à jour pour que tout fonctionne
Android:maxLines="1"
Android:inputType="text"
Android:imeOptions="actionDone"
Ici, vous pouvez ajouter maxLines selon vos besoins. Ne pas utiliser singleLine car il est déconseillé maintenant . Bonne chance!
Android:inputType="text"
Vous devez spécifier un type inputType pour que imeOptions puisse fonctionner.
Les réponses données ici étaient toutes très utiles, mais je luttais toujours pour que "Next" de mon clavier soit affiché.
Il s'avère que l'utilisation de l'attribut Android:digits
d'Android dans votre code XML empêche le Android:imeOptions="actionNext"
de fonctionner comme prévu.
La réponse consiste en fait à utiliser le Android:singleLine="True"
obsolète. Cela semble forcer l'option IME à être respectée.
Ancien code non fonctionnel
<Android.support.design.widget.TextInputEditText
Android:id="@+id/first_name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
Android:ellipsize="end"
Android:hint="@string/first_name"
Android:imeOptions="actionNext"
Android:inputType="textCapWords"
Android:maxLength="35"
Android:maxLines="1" />
Code de travail
<Android.support.design.widget.TextInputEditText
Android:id="@+id/first_name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
Android:ellipsize="end"
Android:hint="@string/first_name"
Android:imeOptions="actionNext"
Android:inputType="textCapWords"
Android:maxLength="35"
Android:maxLines="1"
Android:singleLine="true" />
Je ne suis pas partisan de l'utilisation d'un attribut déconseillé, mais pour l'instant, il semble obtenir le résultat souhaité.
La clé ici est de définir le type d'entrée et les attributs imeOptions
<EditText
Android:inputType="number"
Android:maxLines="1"
Android:imeOptions="actionSearch" />
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/auth_register_re_password"
Android:hint="Enter Password Again"
Android:imeActionLabel="login"
Android:gravity="center"
Android:imeOptions="actionUnspecified"
Android:inputType="textPassword"
Android:maxLines="1"
/>
Seulement cela a fonctionné pour moi.
Changes le:
Android:maxLines="1"
Android:inputType="text"
Android:imeOptions="actionNext"
sur ça:
Android:singleLine="true"
Android:inputType="text"
Android:imeOptions="actionNext"