teclado tapar tapa studio programáticamente pantalla ocultar edittext desactivar con como cerrar android keyboard hide android-softkeyboard soft-keyboard

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.




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); } }