Tengo un lugar EditText
donde configuro la siguiente propiedad para que pueda mostrar el botón Listo en el teclado cuando el usuario hace clic en Editar texto.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Cuando el usuario hace clic en el botón Listo en el teclado de la pantalla (terminado de escribir), quiero cambiar un RadioButton
estado.
¿Cómo puedo rastrear el botón hecho cuando se presiona desde el teclado de la pantalla?
android
android-edittext
ime
d-man
fuente
fuente
Respuestas:
Terminé con una combinación de respuestas de Roberts y Chirags:
Actualización: el código anterior algunas veces activaría la devolución de llamada dos veces. En su lugar, opté por el siguiente código, que obtuve de los clientes de chat de Google:
fuente
isPreparedForSending()
y por qué regresa el segundo métodotrue
?Pruebe esto, debería funcionar para lo que necesita:
fuente
<EditText android:imeOptions="actionDone" android:inputType="text"/>
El código de Java es:
fuente
Sé que esta pregunta es antigua, pero quiero señalar lo que funcionó para mí.
Intenté usar el código de muestra del sitio web de desarrolladores de Android (que se muestra a continuación), pero no funcionó. Así que verifiqué la clase EditorInfo y me di cuenta de que el valor entero IME_ACTION_SEND se especificaba como
0x00000004
.Código de muestra de desarrolladores de Android:
Entonces, agregué el valor entero a mi
res/values/integers.xml
archivo.Luego, edité mi archivo de diseño de la
res/layouts/activity_home.xml
siguiente maneraY luego, el código de muestra funcionó.
fuente
Más detalles sobre cómo configurar OnKeyListener y hacer que escuche el botón Listo.
Primero agregue OnKeyListener a la sección de implementos de su clase. Luego agregue la función definida en la interfaz OnKeyListener:
Dado un objeto EditText:
fuente
Si bien la mayoría de las personas ha respondido la pregunta directamente, quería dar más detalles sobre el concepto detrás de ella. Primero, me llamó la atención de IME cuando creé una actividad de inicio de sesión predeterminada. Me generó un código que incluía lo siguiente:
Ya debería estar familiarizado con el atributo inputType. Esto solo informa a Android el tipo de texto esperado, como una dirección de correo electrónico, contraseña o número de teléfono. La lista completa de valores posibles se puede encontrar aquí .
Sin embargo, era el atributo
imeOptions="actionUnspecified"
que no entendía su propósito. Android le permite interactuar con el teclado que aparece desde la parte inferior de la pantalla cuando se selecciona texto usandoInputMethodManager
. En la esquina inferior del teclado, hay un botón, por lo general dice "Siguiente" o "Listo", según el campo de texto actual. Android te permite personalizar esto usandoandroid:imeOptions
. Puede especificar un botón "Enviar" o un botón "Siguiente". La lista completa se puede encontrar aquí .Con eso, puede escuchar las pulsaciones en el botón de acción definiendo un
TextView.OnEditorActionListener
para elEditText
elemento. Como en tu ejemplo:Ahora en mi ejemplo tenía
android:imeOptions="actionUnspecified"
atributo. Esto es útil cuando desea intentar iniciar sesión en un usuario cuando presiona la tecla Intro. En su Actividad, puede detectar esta etiqueta y luego intentar iniciar sesión:fuente
Gracias a chikka.anddev y Alex Cohn en Kotlin es:
Aquí verifico la
Enter
clave, porque regresa enEditorInfo.IME_NULL
lugar deIME_ACTION_DONE
.Consulte también Android imeOptions = "actionDone" no funciona . Añadir
android:singleLine="true"
en elEditText
.fuente
Solución Kotlin
La forma básica de manejarlo en Kotlin es:
Extensión Kotlin
Use esto para simplemente llamar
edittext.onDone{/*action*/}
a su código principal. Hace que su código sea mucho más legible y fácil de mantenerNo olvides agregar estas opciones a tu texto de edición
fuente
setOnEditorActionListener
embargo, parece que sigo recibiendo una advertencia de pelusa con respecto al valor de retorno del . Tal vez es sólo una cuestión de ajustes de configuración locales, pero mi linter realmente, realmente quiere que añada unaelse
rama demasiado para poder aceptar el "verdadero" como una declaración de retorno del oyente (en contraposición a laif
-bloque).Si usa Anotaciones de Android https://github.com/androidannotations/androidannotations
Puedes usar la anotación @EditorAction
fuente