temas teclado programacion personalizar para grande google gboard descargar configurar celular android

programacion - Android descarta el teclado



teclado para android apk (7)

¿Desea deshabilitar o descartar un teclado virtual?

Si solo desea descartarlo, puede usar las siguientes líneas de código en el botón al hacer clic. Evento

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

¿Cómo descarto el teclado cuando se presiona un botón?


Aquí hay una solución de Kotlin (mezclando las varias respuestas en el hilo)

Crear una función de extensión (quizás en una clase común de ViewHelpers)

fun Activity.dismissKeyboard() { val inputMethodManager = getSystemService( Context.INPUT_METHOD_SERVICE ) as InputMethodManager if( inputMethodManager.isAcceptingText ) inputMethodManager.hideSoftInputFromWindow( this.currentFocus.windowToken, /*flags:*/ 0) }

Entonces simplemente consuma usando:

// from activity this.dismissKeyboard() // from fragment activity.dismissKeyboard()


Esta es mi solución

public static void hideKeyboard(Activity activity) { View v = activity.getWindow().getCurrentFocus(); if (v != null) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } }


La primera solución con InputMethodManager funcionó como un campeón para mí, el método getWindow (). SetSoftInputMode no funcionaba en Android 4.0.3 HTC Amaze.

@Ethan Allen, no necesité hacer el texto de edición final. ¿Tal vez estás usando una clase interna EditText que has declarado el método contenedor? Puede hacer que EditText sea una variable de clase de la Actividad. O simplemente declare un nuevo EditText dentro de la clase / método interno y use findViewById () nuevamente. Además, no encontré que necesitaba saber qué EditText en el formulario tenía foco. Podría elegir uno arbitrariamente y usarlo. Al igual que:

EditText myEditText= (EditText) findViewById(R.id.anyEditTextInForm); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);


La solución anterior no funciona para todos los dispositivos y, además, usa EditText como parámetro. Esta es mi solución, solo llame a este método simple:

private void hideSoftKeyBoard() { InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); if(imm.isAcceptingText()) { // verify if the soft keyboard is open imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); } }


también puede usar este código en el evento click button

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);


public static void hideSoftInput(Activity activity) { try { if (activity == null || activity.isFinishing()) return; Window window = activity.getWindow(); if (window == null) return; View view = window.getCurrentFocus(); //give decorView a chance if (view == null) view = window.getDecorView(); if (view == null) return; InputMethodManager imm = (InputMethodManager) activity.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (imm == null || !imm.isActive()) return; imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } catch (Throwable e) { e.printStackTrace(); } }