tapar - teclado android studio
Ocultar el teclado virtual después de descartar el diálogo (7)
Yo uso este método:
IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );
Donde searchTextEntry
es el nombre de mi referencia EditText
.
Quiero ocultar el teclado virtual después de que AlertDialog lo cierre, pero aún está visible. Aquí está mi código:
alert = new AlertDialog.Builder(MyActivity.this);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
alert.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
});
Me encontré con el mismo problema. Lo resolvió haciendo esto. No necesita ninguna referencia:
imm.hideSoftInputFromWindow(getWindow().getDecorView()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
En Manifiesto xml
android: windowSoftInputMode = "stateAlwaysHidden"
Se ocultará automáticamente el teclado de software en Descartar del cuadro de diálogo
Todos estos consejos para utilizar InputMethodManager
son algo imprecisos: dónde exactamente llamarlos,
y no funcionan al menos para mí.
Sí, el teclado desaparece pero la aplicación se bloquea?
El principal problema es que el ocultamiento del teclado ocurre al mismo tiempo cuando el diálogo desaparece.
Para evitarlo, debe llamarse a view.postDelayed()
en view.postDelayed()
después de imm.hideSoftInputFromWindow()
y en mi caso configuro la demora como 150.
Esta respuesta resuelve el problema de ocultar un teclado suave de un diálogo incluso si no hay texto de edición enfocado
Puedes encontrar una solución aquí:
http://www.workingfromhere.com/blog/2011/04/27/close-hide-the-android-soft-keyboard/
O aquí:
Tuve un problema similar al cerrar un cuadro de diálogo de alerta. Esto parece hacer el truco para mí.
Dentro de su DialogFragment
public static void closeKB(final View view)
{
caller.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 1);
}
@Override
public void onDismiss(DialogInterface dialog)
{
super.onDismiss(dialog);
View view = getActivity().getCurrentFocus();
if (view != null)
{
closeKB(view);
}
}