¿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 :
- Android: problema con la depuración de javascript en webview
- Cargando video de Youtube a través de i-frame en android webview
- Android: agregar una imagen en html webview
- Androide WebView - contenido no editable
- Configuración de Url a un WebView
La misma vista web, con Prev / Next :
- Android JS en WebView.loadUrl ()
- Desplazar la vista web horizontalmente dentro de un ViewPager
- ¿Cómo integrar TEST PayU Payment Gateway en la aplicación android?
- Cómo recuperar el contenido HTML de WebView (como una cadena)
- Cómo utilizar Android KitKat EvaluateJavascript en Xamarin.Android/Monodroid y recuperar el resultado?
- Android 2.2 SDK - Inseguro JavaScript intenta acceder al marco con la URL - Google Checkout
- ¿Podría alguien de una vez por todas explicar por favor No puedo llamar a determinedVisibility () - nunca vi una conexión para el pid
- Error de puerto USB de depuración de puertos USB
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; }