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>
Katedral Pillon
la source
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!! :)

Surendra Kumar
la source
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é

Pratnala
la source
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"
        />
voghDev
la source
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é.

welshk91
la source
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" />
Mani
la source
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!

Ali Nawaz
la source
8
android:inputType="text"

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

paulb444
la source
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" />
Pavan Bangalala
la source
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"
Zakhar Rodionov
la source
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"/>
Sai Gopi moi
la source
que fait actionUnspecifiedexactement.
Shubham Naik
4

sous le code est la force

android:inputType="text"
Mehrdad
la source
4

Ces trois lignes suffisent.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Googlian
la source