Quiero mostrar automáticamente el teclado virtual cuando un EditText
foco está enfocado (si el dispositivo no tiene un teclado físico) y tengo dos problemas:
Cuando
Activity
se muestra my, miEditText
está enfocado pero el teclado no se muestra, necesito hacer clic nuevamente para mostrar el teclado (debe mostrarse cuandoActivity
se muestra my ).Y cuando hago clic en Listo en el teclado, el teclado se descarta pero
EditText
permanece enfocado y no quiero (porque mi edición está hecha).
Para resumir, mi problema es tener algo más parecido al iPhone: que mantiene la sincronización del teclado con mi EditText
estado (enfocado / no enfocado) y, por supuesto, no presenta un teclado virtual si hay uno físico.
android
keyboard
focus
android-edittext
android-softkeyboard
Ludovic Landry
fuente
fuente
Respuestas:
Para forzar la aparición del teclado virtual, puede usar
Y para eliminar el enfoque
EditText
, lamentablemente necesita tener un maniquíView
para enfocar.espero que esto ayude
Para cerrarlo puedes usar
Esto funciona para usarlo en un diálogo
fuente
yourEditText.requestFocus()
lo descrito aquí: stackoverflow.com/questions/8991522/…Yo tuve el mismo problema. Inmediatamente después de que editText VISIBILITY cambiara de GONE a VISIBLE, tuve que establecer el enfoque y mostrar el teclado virtual. Lo logré usando el siguiente código:
Funciona para mí con un retraso de 100 ms, pero falló sin demora o solo con un retraso de 1 ms.
La parte comentada del código muestra otro enfoque, que funciona solo en algunos dispositivos. Probé en las versiones del sistema operativo 2.2 (emulador), 2.2.1 (dispositivo real) y 1.6 (emulador).
Este enfoque me ahorró mucho dolor.
fuente
EditText
. Para otros que lean esto, en lugar de crear uno nuevoHandler
, también podrían usar elView.postDelayed()
método en elyourEditText
widget.Para que aparezca el teclado, use
Este método es más confiable que invocar directamente InputMethodManager.
Para cerrarlo, use
fuente
InputMethodManager
? (Por un lado, no funciona, a diferencia de la solución de raukodraug.)Cuando nada más funciona, obliga a que se muestre :
Y luego, si desea cerrarlo, en onPause (), por ejemplo, puede llamar a:
fuente
El siguiente código es sacado del código fuente 4.1 de Google para SearchView. Parece funcionar, bien en versiones menores de Android también.
Luego, además, se debe agregar el siguiente código a medida que se crea Control / Activity. (En mi caso, es un control compuesto, en lugar de una actividad).
fuente
setImeVisibility(hasFocus)
?android:windowSoftInputMode="stateAlwaysVisible"
-> en archivo de manifiesto.edittext.requestFocus();
-> en código.Esto abrirá un teclado virtual en el que editar texto tiene el foco de solicitud a medida que aparece la actividad.
fuente
manifest
!He tenido algo de suerte reciente en algunos casos simples con el código a continuación. No he terminado todas las pruebas pero ...
Y presto aparece el teclado.
fuente
Puedes intentar forzar la aparición del teclado virtual, funciona para mí:
fuente
A veces la respuesta de raukodraug no funciona. Lo hice de esta manera con algunas pruebas y errores:
Y la parte EditText :
fuente
Para ocultar el teclado, use este:
y para mostrar el teclado:
fuente
onStart()
, y puede usarlogetDialog().getWindow()
como una alternativa agetActivity().getWindow()
.Y para Kotlin solo use estas extensiones:
fuente
Por fragmento, seguro que está funcionando:
fuente
showSoftInput
no estaba funcionando para mí en absoluto.Pensé que necesitaba establecer el modo de entrada: (aquí en el componente Actividad en el manifiesto)
fuente
Creer o no mi problema con Soft Keyboard se resolvió cuando descubrí que las animaciones de Actividades pueden deshabilitar el Soft Keyboard. Cuando llamas a la intención con el
y
Puede ocultar el teclado suave y no hay forma de mostrarlo.
fuente
Tuve el mismo problema en varias situaciones diferentes, y las soluciones que encontré funcionan en algunas, pero no funcionan en otras, así que aquí hay una solución combinada que funciona en la mayoría de las situaciones que he encontrado:
fuente
fuente
Combiné todo aquí y para mí funciona:
fuente
Funcionó para mi. Puedes probar con esto también para mostrar el teclado:
fuente
fragmento de código . . .
fuente
Kotlin
extensión para mostrar el teclado en foco.Esta es una combinación de respuestas anteriores, que eran demasiado largas o incompletas.
Esta extensión publica un ejecutable en la cola de mensajes que muestra el teclado virtual después de solicitar el foco:
Llámalo desde cualquier vista cuando sea necesario después:
fuente
simplemente agregue android: windowSoftInputMode = "stateHidden" en el archivo de manifiesto ...
fuente
fuente
Dentro de tu manifiesto:
android:windowSoftInputMode="stateAlwaysVisible"
- Teclado lanzado inicialmente.android:windowSoftInputMode="stateAlwaysHidden"
- Teclado inicialmente oculto.También me gusta usarlo
"adjustPan"
porque cuando se inicia el teclado, la pantalla se ajusta automáticamente.fuente
Simplemente agregue esta línea en su vista EditText:
y TADA: ¡el teclado comenzó a aparecer automáticamente!
Tuve un problema similar y descubrí esta solución simple y extraña.
Como ya se mencionó aquí por el usuario 3392439, la apariencia del teclado al enfocarse de alguna manera extrañamente conectada con la presencia del componente de desplazamiento en el archivo XML.
Incluso la presencia de otra vista EditText que comprende la línea mencionada anteriormente en el mismo XML hace que el teclado aparezca sin importar cuál de EditTexts esté enfocado actualmente.
Si tiene al menos una vista visible que comprende un componente de desplazamiento en su archivo XML, el teclado aparecerá automáticamente en foco.
Si no hay desplazamiento, debe hacer clic en Editar texto para que aparezca el teclado.
fuente
requesFocus()
desde un controlador de clic y esta es la única manera de que no sea una explícita showSoftInput SHOW_FORCEDTodas las soluciones dadas anteriormente (la interacción InputMethodManager en OnFocusChangeListener.onFocusChange oyente adjunto a su EditText funciona bien si tiene edición única en la actividad.
En mi caso tengo dos ediciones.
He observado que onFocusChange se activa para tvX con hasFocus = true (se muestra el teclado) pero luego para tvY con hasFocus = true (teclado oculto). Al final, no se veía ningún teclado.
La solución general debe tener una declaración correcta en if "show keyboard if EditText text is focus"
fuente
En su sección onResume () de la Actividad, puede llamar al método bringKeyboard ();
fuente
WidgetUtils.showKeyboard
? Esa es la parte más importante aquí.Ninguna de las respuestas funcionó para mí. Aquí hay una manera simple.
Solo retrasé el método requestFocus () durante 400 ms.
fuente
Descubrí un comportamiento extraño, ya que en una de mis aplicaciones, el teclado virtual se mostraba automáticamente al ingresar a la actividad (hay un editText.requestFocus () en onCreate).
Al investigar más, descubrí que esto se debía a que hay un ScrollView alrededor del diseño. Si elimino el ScrollView, el comportamiento es como se describe en la declaración del problema original: solo al hacer clic en editText ya enfocado aparece el teclado virtual.
Si no funciona para usted, intente poner un ScrollView, de todos modos es inofensivo.
fuente
Tuve un problema similar al usar animaciones de vista . Así que puse un oyente de animación para asegurarme de que esperaría a que terminara la animación antes de intentar solicitar un acceso de teclado en el texto de edición que se muestra.
fuente
Estoy de acuerdo con el raukodraug para usarlo en una vista rápida, debe solicitar / enfocar de esta manera:
Saludos.
fuente