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>

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


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


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

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.


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

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!


8
android:inputType="text"

Tienes que especificar un inputType para que las imeOptions funcionen.


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

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"

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

qué hace actionUnspecifiedexactamente.
Shubham Naik

4

debajo del código es la fuerza

android:inputType="text"

4

Estas tres líneas son suficientes.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.