L'impostazione di EditText imeOptions su actionNext non ha alcun effetto


94

Ho un file di layout xml abbastanza complesso (non proprio). Una delle viste è LinearLayout ( v1) con due figli: un EditText ( v2) e un altro LinearLayout ( v3). Il LinearLayout figlio a sua volta ha un EditText ( v4) e un ImageView ( v5).

Per EditText v2 ho imeOptions come

android:imeOptions="actionNext"

Ma quando eseguo l'app, la tastiera returnnon seleziona nexte voglio che cambi in next. Come risolvo questo problema?

Inoltre, quando l'utente fa clic successivamente, voglio che lo stato attivo vada a EditText v4. Lo faccio io?

Per coloro che hanno davvero bisogno di vedere un po 'di codice:

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

Non sono sicuro che questo funzionerà per le visualizzazioni che non sono fratelli, ma puoi provare ad aggiungere android:nextFocusDown="@id/edit_text_v4"(magari anche provare android:nextFocusForwardo alcuni degli altri attributi nextFocus).
Karakuri

@Karakuri non ha funzionato. Si noti che il pulsante successivo non viene visualizzato affatto. Il pulsante è ancora il pulsante di ritorno.
Katedral Pillon

1
@KatedralPillon Sei riuscito a risolverlo? Se sì, puoi pubblicare la tua soluzione qui? Sto affrontando lo stesso problema.
h4ck3d

Risposte:


189

Basta aggiungere android:maxLines="1" & android:inputType="text"al tuo EditText. Funzionerà!! :)


3
Prova a impostare l'altezza di EditText come wrap_content.
Surendra Kumar

4
Non funziona anche con wrap_content . L'impostazione di un ha inputTyperisolto il problema nel mio caso.
manfcas

3
utilizzare android:maxLines="1"invece di android:singleLine="true"come deprecato
blueware

9
Sebbene, `android: singleLine =" true "` sia deprecato, ma in qualche modo funziona, anche maxLine="1"se non funziona.
Paresh P.

2
È necessario impostare inputType = "text" per far funzionare imeoptions.
Duran Jayson

49

singleLineè deprecato. Anche l'aggiunta di un tipo di input (ad esempio:) android:inputType="text"ha funzionato per me.

Usa android:maxLines="1"come singleLineè deprecato


1
Questa è la risposta corretta !! imeOptions e maxLines non avranno effetto senza inputType
Christopher Smit

43

android:singleLineè stato deprecato, è meglio combinarlo android:maxLines="1"con android:inputType="text". Questo sarebbe il codice:

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

21

Le risposte fornite qui sono state tutte molto utili, ma stavo ancora lottando per mostrare "Avanti" della mia tastiera.

Si scopre che quando usi l' android:digitsattributo di Android nel tuo XML, impedisce il fileandroid:imeOptions="actionNext" di funzionare come previsto.

La risposta è in realtà usare il deprecato android:singleLine="True" . Ciò sembra costringere l'opzione IME a essere rispettata.

Vecchio codice non funzionante

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

Codice di lavoro

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

Non sono un fan dell'utilizzo di un attributo deprecato, ma per ora sembra ottenere il risultato desiderato.


grazie deprecato ma funziona !! qualche problema si verificherà in futuro?
Arbaz. In

11

singola riga deprecata, quindi aggiungi il codice di seguito, penso che inputType debba.

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

10

Finalmente ho una soluzione sicura per questo problema Basta aggiungere queste 3 righe nel testo di modifica e funzionerà bene

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

Qui puoi aggiungere maxLines in base alle tue esigenze. Non utilizzare singleLine in quanto ora è deprecato. In bocca al lupo!


8
android:inputType="text"

È necessario specificare un inputType affinché imeOptions funzioni.


cosa succede se l'ultimo elemento è la password nel modulo?
silentsudo

5

La chiave qui è impostare il tipo di input e gli attributi imeOptions

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

5

Solo questo ha funzionato per me.

Cambiarlo:

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

su quello:

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

inputType = "text" l'ha fatto per me.
Hackmodford

lo stesso inputeType = "text" funziona per me
Wesley franks il

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

cosa fa actionUnspecifiedesattamente.
Shubham Naik

4

sotto il codice è force

android:inputType="text"

4

Queste tre righe sono sufficienti.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.