¿Puede Android WebView HTML influenciar las características del teclado o del teclado?
Tengo una webview con un formulario de entrada de tarjeta de crédito (con los campos estándar <input type="text" />
). En diferentes versiones de Android obtengo diferentes teclados. Kit-Kat no parece mostrar teclas Prev / Next cuando está dentro del formulario.
- En el lado web, ¿tengo alguna influencia sobre esto?
- Si no, ¿qué debo recomendar al desarrollador para el lado de Android?
Ejemplo sin Prev / Next :
- No se puede ver el video en Android Web View
- Carga de archivos de Android WebView
- Abrir un menú de carga de archivos en una vista web no funciona
- Webview dentro del listview: conflictos de eventos táctiles Por lo tanto no puede pellizcar Zoom IN / OUT en android
- Android - El idioma de WebView cambia abruptamente en Android N
La misma vista web, con Prev / Next :
- Bloquear determinadas URL de seguridad en la vista web de Android
- Compruebe qué URL se abre en pestañas personalizadas de cromo
- Cómo deshabilitar completamente el teclado virtual para todas las entradas en la vista web de Android
- Después de un tiempo de uso, mi aplicación se congela durante el desplazamiento de un WebView, diciendo "no se pudo bloquear la superficie"
- ¿Es posible acceder a la caché WebView?
- WebView scrollTo no funciona
- Cada navegador basado en WebKit bloquea sitios usando Omniture. ¿Por qué?
- ¿Hay una alternativa a la visualización web?
Puede controlar el teclado desde WebView, pero, como otras respuestas sugieren, puede que no funcione con cada teclado hecho. A pesar de eso, normalmente encuentro que la mayoría de los teclados principales han implementado el comportamiento que quiero.
El WebView tiene un método llamado onCreateInputConnection
. Puede conectarse a este método y agregar (y / o quitar) los indicadores a inputType
y / o imeOptions
. Hay muchas banderas disponibles para usted.
Consulte las opciones de EditorInfo , en particular IME_FLAG_NAVIGATE_NEXT e IME_FLAG_NAVIGATE_PREVIOUS . Vea el uso a continuación (que elimina los indicadores prev / next de las opciones del teclado):
@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = super.onCreateInputConnection(outAttrs); outAttrs.imeOptions = outAttrs.imeOptions & ~EditorInfo.IME_FLAG_NAVIGATE_NEXT & ~EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS; return inputConnection; }
Otra cosa que podrías intentar es ocultar la barra de sugerencias entera utilizando los flags InputType TYPE_TEXT_FLAG_NO_SUGGESTIONS . Vea el ejemplo a continuación (que agrega el indicador "sin sugerencias" al tipo de entrada):
@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = super.onCreateInputConnection(outAttrs); outAttrs.inputType = outAttrs.inputType | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS; return inputConnection; }
Hay muchas otras banderas disponibles para tener un juego con para personalizar el IME directamente desde el WebView. Refiérase al desarrollador a las páginas enlazadas y debería ser capaz de lograr el comportamiento que está buscando en la mayoría de los teclados.
Tienes un control mínimo, pero no mucho. El tipo de control (passowrd, numérico, texto) se enviará al teclado virtual y se usará para cambiar el modo en que se muestran las cosas. Sin embargo, las opciones que hace el teclado basadas en esas opciones son específicas del teclado: el teclado de Google reacciona de forma diferente a Swype, que reacciona de forma diferente a Swiftkey, que reacciona de forma diferente al teclado de Samsung, etc.
Probado en Android Studio 3.0 (SDK API 26), la respuesta https://stackoverflow.com/a/23462658/3286489 se bloquea. Después de la búsqueda encontró este trabajo.
@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = new BaseInputConnection(this, true); outAttrs.imeOptions = outAttrs.imeOptions & ~EditorInfo.IME_FLAG_NAVIGATE_NEXT & ~EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS; return inputConnection; }
Y
@Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = new BaseInputConnection(this, true); outAttrs.inputType = outAttrs.inputType | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS; return inputConnection; }