when touched teclado tapar studio salga que pulsar outside ocultar fuera evitar edittext con boton android keyboard hide

touched - Android: Ocultar teclado después de hacer clic en el botón



ocultar teclado al pulsar fuera de edit text (7)

Necesito ocultar el teclado de Android después de hacer clic en un botón.

He visto muchos ejemplos de cómo hacer esto, sin embargo, todos parecen usar un objeto editText específico.

p.ej

InputMethodManager imm = (InputMethodManager)getSystemService( Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Mi problema es que estoy construyendo la pantalla de forma dinámica, por lo que podría haber campos de texto para editar crines. ¿Hay alguna manera de que el teclado se pueda ocultar sin que tenga que especificar para qué objeto EditText lo estoy ocultando?

Gracias

Martín


En su lugar, podría establecerlo en su diseño, es decir:

LinearLayout mainLayout; // Get your layout set up, this is just an example mainLayout = (LinearLayout)findViewById(R.id.myLinearLayout); // Then just use the following: InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mainLayout.getWindowToken(), 0);

Este es un ejemplo suponiendo que su diseño se creará independientemente de cuántos objetos EditText (u otros objetos) se colocan en él.

Editar: Además, algo que me resulta muy útil es asegurarme de que el teclado esté oculto cuando se inicia una actividad por primera vez (es decir, si un texto de EditText es lo primero que se enfoca). Para hacer eso, puse esto en el método de Actividad de onCreate() :

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


Puede ocultar el teclado con el siguiente código, probablemente en el botón haga clic en Evento:

//================ Hide Virtual Key Board When Clicking==================// InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow("Your Button/EditText Object".getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); //======== Hide Virtual Keyboard =====================//

Referencia


Si el problema está en una actividad, simplemente lo siguiente funcionará:

try { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception }

de lo contrario, si el código es obligatorio en un fragmento haga lo siguiente

try { InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception }

Esto manejará la ocultación del teclado con un clic de botón o cualquier otro evento que se considere específico cuando se escriba dentro del bloque de evento.


Usas este código

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


No te olvides de utilizar try catch blog porque en caso de que tu teclado no esté abierto y si utilizas la aplicación de teclado keycode hide crash se bloqueará

try { InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception }


edittext.onEditorAction(EditorInfo.IME_ACTION_DONE);


InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(rootView.getWindowToken(), 0);