Das Setzen von EditText imeOptions auf actionNext hat keine Auswirkung

94

Ich habe eine ziemlich komplexe (nicht wirklich) XML-Layoutdatei. Eine der Ansichten ist ein LinearLayout ( v1) mit zwei untergeordneten Elementen: ein EditText ( v2) und ein anderes LinearLayout ( v3). Das untergeordnete LinearLayout verfügt wiederum über einen EditText ( v4) und eine ImageView ( v5).

Für EditText v2 habe ich imeOptions als

android:imeOptions="actionNext"

Wenn ich die App starte, wird die Tastatur returnnicht aktiviert nextund ich möchte, dass sie geändert wird next. Wie behebe ich dieses Problem?

Wenn der Benutzer das nächste Mal klickt, soll der Fokus auf EditText v4 gelegt werden. Ich mache ich das?

Für diejenigen, die wirklich Code sehen müssen:

<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
quelle
Ich bin nicht sicher, ob dies für Ansichten funktioniert, die keine Geschwister sind, aber Sie können versuchen, sie hinzuzufügen android:nextFocusDown="@id/edit_text_v4"(versuchen Sie es vielleicht auch android:nextFocusForwardoder einige der anderen nextFocus-Attribute).
Karakuri
@ Karakuri es hat nicht funktioniert. Beachten Sie, dass die nächste Schaltfläche überhaupt nicht angezeigt wird. Die Taste ist immer noch die Zurück-Taste.
Katedral Pillon
1
@KatedralPillon Hast du es geschafft, es zu lösen? Wenn ja, können Sie Ihre Lösung hier veröffentlichen? Ich stehe vor dem gleichen Problem.
h4ck3d

Antworten:

189

Fügen Sie einfach android:maxLines="1" & android:inputType="text"zu Ihrem EditText. Es wird klappen!! :) :)

Surendra Kumar
quelle
3
Versuchen Sie, die Höhe Ihres EditText als wrap_content festzulegen.
Surendra Kumar
4
Funktioniert auch nicht mit wrap_content . Das Einstellen eines hat inputTypedas Problem in meinem Fall gelöst.
Manfcas
3
verwenden android:maxLines="1"stattandroid:singleLine="true" als veraltet
Blueware
9
Obwohl, android: singleLine = "true", ist veraltet, aber einige, wie der Trick macht, während maxLine="1"nicht funktioniert.
Paresh P.
2
Sie müssen inputType = "text" setzen, damit die Bedrohungen funktionieren.
Duran Jayson
49

singleLineist veraltet. Hinzufügen eines Eingabetyps (z. B.:android:inputType="text" auch bei mir funktioniert.

Verwenden Sie android:maxLines="1"wie singleLineveraltet

Pratnala
quelle
1
Das ist die richtige Antwort !! imeOptions und maxLines haben keine Wirkung ohne inputType
Christopher Smit
43

android:singleLinewurde veraltet, es ist besser, android:maxLines="1"mit zu kombinieren android:inputType="text". Dies wäre der Code:

<EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:maxLines="1"
        android:inputType="text"
        />
voghDev
quelle
21

Die hier gegebenen Antworten waren alle sehr hilfreich, aber ich hatte immer noch Probleme, das "Weiter" meiner Tastatur anzuzeigen.

Es stellt sich heraus, dass wenn Sie das Android- android:digitsAttribut in Ihrem XML verwenden, es nicht android:imeOptions="actionNext"wie erwartet funktioniert.

Die Antwort ist eigentlich, die veralteten zu verwenden android:singleLine="True". Dies scheint die Einhaltung der IME-Option zu erzwingen.

Alter, nicht funktionierender Code

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

Arbeitscode

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

Ich bin kein Fan von veralteten Attributen, aber im Moment scheint es das gewünschte Ergebnis zu erzielen.

welshk91
quelle
danke veraltet, aber es funktioniert !! Wird es in Zukunft ein Problem geben?
Arbaz.in
11

einzelne Zeile veraltet, so dass Sie unten Code hinzufügen Ich denke, inputType muss.

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

Endlich habe ich eine sichere Lösung für dieses Problem. Fügen Sie einfach diese 3 Zeilen in Ihren Bearbeitungstext ein und es wird gut funktionieren

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

Hier können Sie je nach Anforderung maxLines hinzufügen . Verwenden Sie singleLine nicht , da es jetzt veraltet ist. Viel Glück!

Ali Nawaz
quelle
8
android:inputType="text"

Sie müssen einen inputType angeben, damit imeOptions funktioniert.

paulb444
quelle
Was ist, wenn das letzte Element ein Passwort in Form ist?
Silentsudo
5

Der Schlüssel hier ist das Festlegen der Attribute für Eingabetyp und imeOptions

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />
Pavan Bangalala
quelle
5

Nur das hat bei mir funktioniert.

Ändern Sie es:

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

auf diesem:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Zakhar Rodionov
quelle
inputType = "text" hat es für mich getan.
Hackmodford
Ebenso funktioniert der inputeType = "text" für mich
wesley franks
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 ich
quelle
was macht actionUnspecifiedgenau.
Shubham Naik
4

Der folgende Code ist Kraft

android:inputType="text"
Mehrdad
quelle
4

Diese drei Zeilen sind genug.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Googlian
quelle