Ustawienie EditText imeOptions na actionNext nie ma żadnego efektu

95

Mam dość złożony (nie do końca) plik układu XML. Jeden z widoków to LinearLayout ( v1) z dwoma v2elementami podrzędnymi: EditText ( v3) i innym LinearLayout ( ). Z kolei element podrzędny LinearLayout ma EditText ( v4) i ImageView ( v5).

Dla EditText v2 mam imeOptions jako

android:imeOptions="actionNext"

Ale kiedy uruchamiam aplikację, klawiatura returnnie sprawdza nexti chcę, aby zmieniła się na next. Jak rozwiązać ten problem?

Ponadto, gdy użytkownik kliknie następny, chcę skupić się na przejściu do EditText v4. Mam to zrobić?

Dla tych, którzy naprawdę potrzebują zobaczyć kod:

<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
źródło
Nie jestem pewien, czy to zadziała w przypadku widoków, które nie są rodzeństwem, ale możesz spróbować dodać android:nextFocusDown="@id/edit_text_v4"(może też spróbować android:nextFocusForwardlub niektóre inne atrybuty nextFocus).
Karakuri
@Karakuri to nie zadziałało. Zauważ, że następny przycisk w ogóle się nie wyświetla. Przycisk nadal jest przyciskiem powrotu.
Katedral Pillon
1
@KatedralPillon Czy udało Ci się go rozwiązać? Jeśli tak, czy możesz zamieścić tutaj swoje rozwiązanie? Mam ten sam problem.
h4ck3d

Odpowiedzi:

192

Po prostu dodaj android:maxLines="1" & android:inputType="text"do swojego EditText. To będzie działać!! :)

Surendra Kumar
źródło
3
Spróbuj ustawić wysokość EditText jako wrap_content.
Surendra Kumar
4
Nie działa również z wrap_content . Ustawienie inputTyperozwiązało problem w moim przypadku.
manfcas
3
użyj android:maxLines="1"zamiast android:singleLine="true"jako przestarzały
blueware
9
Chociaż `android: singleLine =" true "` jest przestarzały, ale niektóre sposoby działają, chociaż maxLine="1"nie działają.
Paresh P.
2
Musisz ustawić inputType = "text", aby ulepszenia działały.
Duran Jayson
49

singleLinejest przestarzałe. Dodanie typu wejścia (np:) android:inputType="text"również działało dla mnie.

Użyj android:maxLines="1"jako singleLineprzestarzałe

pratnala
źródło
1
To jest poprawna odpowiedź !! imeOptions i maxLines nie będą działać bez inputType
Christopher Smit
43

android:singleLinezostał wycofany, lepiej jest połączyć go android:maxLines="1"z android:inputType="text". To byłby kod:

<EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:maxLines="1"
        android:inputType="text"
        />
voghDev
źródło
21

Udzielone tutaj odpowiedzi były bardzo pomocne, ale wciąż starałem się pokazać „Dalej” na klawiaturze.

Okazuje się, że użycie android:digitsatrybutu Androida w pliku XML uniemożliwia android:imeOptions="actionNext"działanie zgodnie z oczekiwaniami.

Odpowiedzią jest użycie wycofanego pliku android:singleLine="True" . Wydaje się, że wymusza to poszanowanie opcji IME.

Stary, niedziałający kod

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

Kodeks roboczy

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

Nie jestem fanem używania przestarzałego atrybutu, ale na razie wydaje się, że daje on pożądany rezultat.

welshk91
źródło
dzięki przestarzałe, ale działa! jakikolwiek problem wystąpi w przyszłości?
Arbaz w dniu
12

pojedynczy wiersz przestarzały, więc należy dodać poniższy kod, myślę, że inputType musi.

        <EditText 
            android:inputType="text"
            android:maxLines="1"
            android:imeOptions="actionNext" />
Mani
źródło
11

Wreszcie mam pewne rozwiązanie tego problemu. Po prostu dodaj te 3 linie do tekstu edycji i będzie działać dobrze

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

Tutaj możesz dodać maxLines zgodnie z wymaganiami. Nie używaj singleLine, ponieważ jest teraz przestarzała. Powodzenia!

Ali Nawaz
źródło
8
android:inputType="text"

Musisz określić inputType, aby imeOptions działało.

paulb444
źródło
co jeśli ostatnią pozycją jest hasło w formularzu?
silentsudo
6

Te trzy linie wystarczą.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Googlian
źródło
5

Kluczowe jest tutaj ustawienie typu wejścia i atrybutów imeOptions

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />
pavan bangalala
źródło
5

Tylko to działało dla mnie.

Zmień to:

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

Na tym:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Zachar Rodionow
źródło
inputType = "text" zrobił to za mnie.
Hackmodford
5

poniższy kod jest obowiązkowy

android:inputType="text"
Mehrdad
źródło
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 Me
źródło
co robi actionUnspecifieddokładnie.
Shubham Naik