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>

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


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


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

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.


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

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!


8
android:inputType="text"

Musisz określić inputType, aby imeOptions działał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"

5

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

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />

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"

inputType = "text" zrobił to za mnie.
Hackmodford


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

co robi actionUnspecifieddokładnie.
Shubham Naik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.