Establecer EditText imeOptions en actionNext no tiene ningún efecto

94

Tengo un archivo de diseño xml bastante complejo (no realmente). Una de las vistas es LinearLayout ( v1) con dos hijos: un EditText ( v2) y otro LinearLayout ( v3). El niño LinearLayout a su vez tiene un EditText ( v4) y un ImageView ( v5).

Para EditText v2 tengo imeOptions como

android:imeOptions="actionNext"

Pero cuando ejecuto la aplicación, el teclado returnno se activa nexty quiero que cambie a next. ¿Cómo soluciono este problema?

Además, cuando el usuario hace clic en Siguiente, quiero que el enfoque vaya a EditText v4. Yo hago esto?

Para aquellos que realmente necesitan ver algún código:

<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>
Catedral Pillon
fuente
No estoy seguro de que esto funcione para las vistas que no son hermanas, pero puede intentar agregar android:nextFocusDown="@id/edit_text_v4"(también tal vez probar android:nextFocusForwardo algunos de los otros atributos de nextFocus).
Karakuri
@Karakuri no funcionó. Observe que el siguiente botón no aparece en absoluto. El botón sigue siendo el botón de retorno.
Catedral Pillon
1
@KatedralPillon ¿Lograste solucionarlo? Si es así, ¿puede publicar su solución aquí? Estoy enfrentando el mismo problema.
h4ck3d

Respuestas:

189

Solo agregue android:maxLines="1" & android:inputType="text"a su EditText. ¡¡Funcionará!! :)

Surendra Kumar
fuente
3
Intente establecer la altura de su EditText como wrap_content.
Surendra Kumar
4
No funciona también con wrap_content . Establecer y inputTyperesolver el problema en mi caso.
manfcas
3
usar en android:maxLines="1"lugar de android:singleLine="true"como obsoleto
blueware
9
Aunque, `android: singleLine =" true "` está obsoleto, pero de alguna manera funciona el truco, mientras maxLine="1"que no funciona.
Paresh P.
2
Debe establecer inputType = "text" para que las opciones de imección funcionen.
Duran Jayson
49

singleLinees obsoleto. Agregar un tipo de entrada (por ejemplo:) android:inputType="text"también funcionó para mí.

Usar android:maxLines="1"como singleLineestá obsoleto

pratnala
fuente
1
¡¡Esta es la respuesta correcta!! imeOptions y maxLines no tendrán efecto sin inputType
Christopher Smit
43

android:singleLineha quedado obsoleto, es mejor combinarlo android:maxLines="1"con android:inputType="text". Este sería el código:

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

Las respuestas dadas aquí fueron todas muy útiles, pero todavía estaba luchando para que se mostrara el "Siguiente" de mi teclado.

Resulta que cuando usa el android:digitsatributo de Android en su XML, evita que android:imeOptions="actionNext"funcione como se esperaba.

En realidad, la respuesta es usar el obsoleto android:singleLine="True". Esto parece obligar a respetar la opción IME.

Código antiguo que no funciona

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

Código de trabajo

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

No soy fanático de usar un atributo obsoleto, pero por ahora parece obtener el resultado deseado.

welshk91
fuente
gracias desaprobado pero está funcionando !! algún problema ocurrirá en el futuro?
Arbaz.in
11

una sola línea en desuso, por lo que agrega el código siguiente, creo que inputType debe hacerlo.

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

Finalmente tengo una solución segura para este problema.Solo agregue estas 3 líneas en su texto de edición y funcionará bien

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

Aquí puede agregar maxLines según sus necesidades. No utilice singleLine, ya que ahora está obsoleto. ¡Buena suerte!

Ali Nawaz
fuente
8
android:inputType="text"

Tienes que especificar un inputType para que las imeOptions funcionen.

paulb444
fuente
¿Qué pasa si el último elemento es la contraseña en forma?
silentsudo
5

La clave aquí es establecer el tipo de entrada y los atributos imeOptions

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />
pavan bangalala
fuente
5

Solo esto funcionó para mí.

Cambialo:

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

en ese:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Zakhar Rodionov
fuente
inputType = "text" lo hizo por mí.
Hackmodford
mismo el inputeType = "text" funciona para mí
Wesley Frank
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
fuente
qué hace actionUnspecifiedexactamente.
Shubham Naik
4

debajo del código es la fuerza

android:inputType="text"
Mehrdad
fuente
4

Estas tres líneas son suficientes.

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