Définir EditText imeOptions sur actionNext n'a aucun effet


94

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). L'enfant LinearLayout a à son tour un EditText ( v4) et un ImageView ( v5).

Pour EditText v2, j'ai imeOptions comme

android:imeOptions="actionNext"

Mais lorsque j'exécute l'application, le clavier returnne vérifie pas nextet je veux qu'il devienne next. Comment résoudre ce problème?

De plus, lorsque l'utilisateur clique sur Suivant, je souhaite que le focus passe à EditText v4. 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>

Je ne suis pas sûr que cela fonctionnera pour les vues qui ne sont pas des frères, mais vous pouvez essayer d'ajouter android:nextFocusDown="@id/edit_text_v4"(peut-être aussi essayer android:nextFocusForwardou certains des autres attributs nextFocus).
Karakuri

@Karakuri cela n'a pas fonctionné. Notez que le bouton suivant n'apparaît pas du tout. Le bouton est toujours le bouton de retour.
Katedral Pillon

1
@KatedralPillon Avez-vous réussi à le résoudre? Si oui, pouvez-vous publier votre solution ici? Je suis confronté au même problème.
h4ck3d

Réponses:


189

Ajoutez simplement android:maxLines="1" & android:inputType="text"à votre EditText. Ça va marcher!! :)


3
Essayez de définir la hauteur de votre EditText sur wrap_content.
Surendra Kumar

4
Ne fonctionne pas aussi avec wrap_content . Définir un a inputTyperésolu le problème dans mon cas.
manfcas

3
utiliser android:maxLines="1"au lieu de android:singleLine="true"comme obsolète
blueware

9
Bien que `android: singleLine =" true "` soit obsolète, mais comment fonctionne le truc, alors maxLine="1"qu'il ne fonctionne pas.
Paresh P.

2
Vous devez définir inputType = "text" pour que imeoptions fonctionne.
Duran Jayson

49

singleLineest obsolète. L'ajout d'un type d'entrée (par exemple:) a android:inputType="text"également fonctionné pour moi.

Utiliser android:maxLines="1"tel singleLinequel est déconseillé


1
C'est la bonne réponse !! imeOptions et maxLines n'auront aucun effet sans inputType
Christopher Smit

43

android:singleLineest obsolète, il vaut mieux 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"
        />

21

Les réponses données ici étaient toutes très utiles, mais j'avais encore du mal à afficher "Suivant" de mon clavier.

Il s'avère que lorsque vous utilisez l' android:digitsattribut Android dans votre XML, cela empêche le android:imeOptions="actionNext"de fonctionner comme prévu.

La réponse est en fait d'utiliser la version obsolète android:singleLine="True". Cela semble forcer le respect de l'option IME.

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 fan de l'utilisation d'un attribut obsolète, mais pour l'instant, il semble obtenir le résultat souhaité.


merci obsolète mais ça marche !! un problème se produira-t-il à l'avenir?
Arbaz.in

11

seule ligne obsolète donc vous ajoutez ci-dessous le code, je pense que inputType doit.

        <EditText 
            android:inputType="text"
            android:maxLines="1"
            android:imeOptions="actionNext" />

10

Enfin, j'ai une solution sûre pour ce problème Ajoutez simplement ces 3 lignes dans votre texte d'édition et cela fonctionnera bien

        android:maxLines="1"
        android:inputType="text"
        android:imeOptions="actionDone"

Ici, vous pouvez ajouter des maxLines en fonction de vos besoins. Ne pas utiliser SingleLine comme il est maintenant dépréciée. Bonne chance!


8
android:inputType="text"

Vous devez spécifier un inputType pour que imeOptions fonctionne.


et si le dernier élément est un mot de passe sous forme?
silentsudo

5

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" />

5

Seul 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"

inputType = "text" l'a fait pour moi.
Hackmodford

même le inputeType = "text" fonctionne pour moi
wesley Franks le

4
<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"/>

que fait actionUnspecifiedexactement.
Shubham Naik


4

Ces trois lignes suffisent.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.