Tengo un EditText
y un Button
en mi diseño.
Después de escribir en el campo de edición y hacer clic en el Botón
, quiero ocultar el teclado virtual. Supongo que esto es un simple trozo de código, pero ¿dónde puedo encontrar un ejemplo de ello?
Puedes forzar a Android a ocultar el teclado virtual usando el InputMethodManager, llamando a hideSoftInputFromWindow
, pasando el token de la ventana que contiene tu vista enfocada.
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Esto obligará a ocultar el teclado en todas las situaciones. En algunos casos querrás pasar InputMethodManager.HIDE_IMPLICIT_ONLY
como segundo parámetro para asegurarte de que sólo ocultas el teclado cuando el usuario no lo ha forzado explícitamente a aparecer (manteniendo pulsado el menú).
Nota: Si quieres hacer esto en Kotlin, utiliza
context?.getSystemService(Context.INPUT_METHOD_SERVICE) como InputMethodManager
.
**Sintaxis de Kotlin
// Check if no view has focus:
val view = this.currentFocus
view?.let { v ->
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(v.windowToken, 0)
}
También es útil para ocultar el teclado de la pantalla:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
);
Esto se puede utilizar para suprimir el teclado virtual hasta que el usuario toque la vista de edición de texto.