Mostrar teclado suave para el diálogo

Estoy mostrando un diálogo con una vista edittext. Sin embargo, el teclado se abrirá sólo si el usuario pulsa dentro de la vista de edición. Así que traté de llamar a un InputMethodManager con el código siguiente.

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(dialogField,0); 

El cuadro de diálogo es el campo de entrada. Sin embargo, cuando exactamente se supone que debo hacer esto? Lo probé en el método onStart () del diálogo, pero no pasa nada. También intenté solicitar el foco para el cuadro de diálogo antes, pero eso no cambia nada.

También intenté este código

 dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange (View v, boolean hasFocus) { if (hasFocus) { Main.log("here"); dialogInput.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); /* InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(dialogField,0); */ } } }); 

En ambas versiones. Pero ningún teclado suave quisiera aparecer. El Main.log es sólo un registro, que me muestra que la función es realmente llamada. Y sí, se llama.

Podría obtener el teclado con el indicador SHOW_FORCED antes de que se abra el cuadro de diálogo. Pero entonces no se cerrará en la salida. Y sólo puedo hacer eso ANTES de mostrar el diálogo. Dentro de cualquier callback no funciona tampoco.

Pregunta impresionante, yo estaba tratando de hacer eso también y encontró una solución.

Utilizando la clase de constructor de diálogo AlertDialog.Builder tendrá que invocar el diálogo de la siguiente manera:

 AlertDialog.Builder builder = new AlertDialog.Builder(); AlertDialog dialog; builder.set... dialog = builder.create(); dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); dialog.show(); 

Esto funcionó bien para mí.

Nota: debe import android.view.WindowManager.LayoutParams; Para el valor constante allí.

Prueba esto

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

Para cerrar

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

Parece imposible.

Así que hice una nueva actividad en lugar del diálogo y dejar que el usuario editar allí. Tenga en cuenta que en las actividades puede establecer el modo de teclado en el archivo de manifiesto. Lo configuré para mostrar, cuando se abre la actividad.

También tenga en cuenta que las pruebas en el emulador con teclas duras no abrirán el teclado para SHOW_IMPLICIT o el indicador 0.

  • Cómo enviar evento de puntero en Android
  • El teclado no se cierra tras volver del cliente de correo electrónico
  • El pie de página sube cuando se muestra el teclado
  • Android: ¿Cómo rastrear si el teclado virtual está abierto?
  • Escuche el teclado para mostrar u ocultar el evento en android
  • Fuerza el teclado suave para mostrar cuando EditText consigue el foco
  • Cambiar el teclado Android L introduzca el color de la tecla
  • ¿Cómo puedo implementar soft keyboard especial
  • Botón Android Hecho en lugar de Siguiente
  • ¿Cómo buscar con la tecla Intro en android personalizado InputMethodService?
  • Creación de un SoftKeyboard con caracteres múltiples / alternativos por clave
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.