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>

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!! :) :)


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


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

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.


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

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!


8
android:inputType="text"

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


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

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"

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

was macht actionUnspecifiedgenau.
Shubham Naik

4

Der folgende Code ist Kraft

android:inputType="text"

4

Diese drei Zeilen sind genug.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.