code - show keyboard android
html textfield en WebView en una aplicación de Android está oculto por el teclado virtual (2)
Tengo una aplicación de Android que es un TabHost con un WebView. Lo uso para cargar un archivo html específico que tiene un campo de texto en la parte inferior.
Cuando toco el campo de texto html, aparece el teclado virtual y oculta el campo de texto, de modo que no puedo ver lo que he escrito.
Aquí está el diseño:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TabWidget
android:focusableInTouchMode="false"
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="63dp" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
Intenté configurar el archivo AndroidManifest.xml con android:windowSoftInputMode="adjustResize"
sin éxito. También intenté reemplazar FrameLayout
en mi diseño con ScollView
, pero eso causó que mi vista webview
aumentara de tamaño indefinidamente cuando la aplicación se está ejecutando. Esto puede deberse a algún javascript que tengo en ejecución en la página.
Me di cuenta de que el navegador web de Android tiene un comportamiento ingenioso: en una página web, después de que aparece el teclado virtual, la página web se desplaza suavemente para que el campo de texto enfocable sea visible para el usuario. ¿Cómo puedo tener este tipo de comportamiento en mi aplicación?
Encontré una solución para este problema. (alrededor de una semana después de haber publicado la pregunta, solo hoy respondí en ...)
Tenía piezas en mi código que cambiaban la altura de WebView (para tener espacio para un TabBar). Resulta que cuando invocas setLayoutParams en un WebView, ya no cambiará su altura, incluso si tienes android:windowSoftInputMode="adjustResize"
establecido.
Evité la necesidad de cambiar la altura de WebView añadiendo el TabBar al archivo de diseño main.xml, con un tamaño inicial de 0. Cuando aumente el tamaño del TabBar, el tamaño del WebView disminuye automáticamente y conserva el android:windowSoftInputMode="adjustResize"
comportamiento.
Me estaba android:windowSoftInputMode="adjustResize"
loco. Nada funciona. android:windowSoftInputMode="adjustResize"
puede ayudar pero asegúrese de que su aplicación no esté en pantalla completa.
La eliminación de la pantalla completa para mi aplicación resolvió el problema con el cambio de tamaño del diseño con el teclado.
<item name="android:windowFullscreen">false</item>