Tengo un widget EditText en mi vista. Cuando el usuario selecciona el widget EditText, muestro algunas instrucciones y aparece el teclado virtual.
Utilizo un OnEditorActionListener para detectar cuando el usuario ha completado la entrada de texto y descarto el teclado, oculto las instrucciones y realizo alguna acción.
Mi problema es cuando el usuario cierra el teclado presionando la tecla ATRÁS. El sistema operativo descarta el teclado, pero mis instrucciones (que necesito ocultar) aún están visibles.
Intenté anular OnKeyDown, pero parece que no se llama cuando se usa el botón ATRÁS para cerrar el teclado.
Intenté configurar un OnKeyListener en el widget EditText, pero tampoco parece que lo llamen.
¿Cómo puedo detectar cuándo se cierra el teclado virtual?
onKeyPreIme
? ¿O hay una razón particular para que no sea así?SearchView
, consulte stackoverflow.com/questions/9629313/…Jay, ¡tu solución es buena! Gracias :)
fuente
KeyEvent.ACTION_UP
también?android.support.v7.widget.AppCompatEditText
para teñir.AppCompatEditText
para androidxHice un pequeño cambio en la solución de Jay llamando a super.onKeyPreIme ():
¡Maravillosa solución, Jay, +1!
fuente
Aquí está mi EditText personalizado para detectar si el teclado se muestra o no
fuente
Es 2019 ahora ...
Así que creé una solución más ordenada con Kotlin
1.Crear una función de extensión:
2.Dónde está el oyente de alternancia:
3. Úselo en cualquier actividad tan simple como esta :
fuente
Simplemente cree una clase que amplíe Edittext y use ese edittext en su código, simplemente debe anular el siguiente método en el edittext personalizado:
fuente
Aquí hay una solución con el oyente clave. No tengo idea de por qué funciona esto, pero OnKeyListener funciona si simplemente anula onKeyPreIme en su EditText personalizado.
SomeClass.java
CustomEditText.java
fuente
Usando la respuesta de @ olivier_sdg, pero convertido a Kotlin:
Uso:
fuente
Para cualquiera que busque hacer lo mismo en Xamarin, he traducido algunas de las respuestas principales, ya que es un poco diferente. Creé una esencia aquí, pero resumiendo, creas un EditText personalizado y lo anulas
OnKeyPreIme
así:... y luego en la vista ...
fuente
hideSoftInputFromWindow
devuelve verdadero cuando el teclado se cierra, use su valor para detectar el cierre del teclado en Androidfuente