En los dispositivos Android que usan teclados suaves, quiero evitar que aparezca la vista de edición de teclado a pantalla completa (que se muestra a continuación) cuando está en modo horizontal (es decir, quiero ver solo el teclado suave en sí y mi vista detrás de él).
Supongo que esto se puede lograr usando el setExtractViewShown(false)
método activado InputMethodService
, pero no puedo acceder a la instancia predeterminada de esto y no quiero implementar un método de entrada personalizado.
Editado para agregar: la vista a la que va la entrada no es una TextView
(es una View
con una InputConnection
implementación personalizada ), por android:imeOptions="flagNoExtractUi"
lo que no funcionará aquí.
flagNoExtractUi
oIME_FLAG_NO_EXTRACT_UI
. Sin embargo, en la documentación paraIME_FLAG_NO_EXTRACT_UI
, que corresponde aflagNoExtractUi
, establece que "se desaconseja el uso de este indicador y puede quedar obsoleto en el futuro", por lo queflagNoFullscreen
es la opción recomendada.Respuestas:
I finalmente respondió a mi propia pregunta:
La interfaz de usuario de extracción (es decir, el modo de edición de pantalla completa) se puede desactivar en el punto en el que se conecta la conexión de entrada:
fuente
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Para hacer eso, navegue a la actividad xml y pegue
android:imeOptions="flagNoExtractUi"
su código. ¿Pero dónde se debe pegar? Eche un vistazo al código de ejemplo de actividad xml y mire EditText:Si desea más opciones de personalización para el teclado, consulte http://developer.android.com/guide/topics/ui/controls/text.html
fuente
agregue la propiedad
android:imeOptions="flagNoExtractUi"
a cada unoEditText
en suXML
archivo.fuente
La respuesta anterior me ayudó a descubrir la solución para EditTexts añadidos dinámicamente:
fuente
Use
android:imeOptions="flagNoFullscreen"
para lograr esa característica.fuente
IME_FLAG_NO_EXTRACT_UI
, que corresponde aflagNoExtractUi
, indica que "Se desaconseja el uso de este indicador y puede quedar obsoleto en el futuro", por lo queflagNoFullscreen
es la opción recomendada.Además, si desea combinar varias imeOptions programáticamente, puede usar | sintaxis.
Por ejemplo, para deshabilitar la vista de edición de pantalla completa en horizontal y reemplazar la tecla "Siguiente" por "Aceptar" (ACTION_DONE) en el teclado, puede usar:
fuente
Si está modificando el IME directamente, puede evitar que muestre un ExtractedView anulando
onUpdateExtractingVisibility
:fuente
Sé que es un poco tarde, pero para cualquier persona que todavía esté interesada, esta es mi solución: en mi caso, tenía una actividad horizontal que contenía un EditText en la parte superior y necesitaba implementar la función de autocompletar en esta actividad de búsqueda , que se superpuso el teclado causó un problema que el usuario no pudo ver el resultado de RecyclerView . Así que terminé teniendo este EditText en mi diseño:
¡Salud!
fuente
Mi solución:
fuente
Puedes usar :
en su texto de edición
fuente
Puede llamar para ocultar el teclado virtual y borrar el foco de la vista de búsqueda.
fuente