HTC One X – Webview se convierte en blanco / vacío después del toque
Tengo una aplicación de Android que tiene cuadro de texto para la búsqueda, algunos botones, webviews (1 visibles 2 invisibles) y un adview admob. La aplicación sólo busca en algunos sitios especiales y funciona muy bien en el emulador, los dispositivos Samsung Galaxy. Pero tengo problemas con HTC One X (no sé sobre otros modelos de HTC).
El problema es que al hacer clic en un botón de búsqueda, la vista web carga la página. A continuación, "a veces" cuando intenta tocar incluso para desplazarse, la vista web simplemente vuelve al área totalmente blanca con barras de desplazamiento. Esto ocurre especialmente después de la actualización de anuncios. Incluso a veces el fondo del anuncio y el área de texto se convierten totalmente en blanco, por lo que no son legibles. En el anuncio sólo flecha azul y las imágenes de llamada de teléfono azul permanecer visibles!
- WebView no se muestra correctamente
- ¿Cómo abrir la página HTML local en el navegador androide nativo (no en la vista web)?
- Proguard rompe Android WebView, ¿Por qué?
- ¿Por qué el teclado no se mostrará en Fragmento con WebView?
- Cómo grabar la pantalla de actividad de la webview con Android MediaCodec?
¿Alguien tiene problemas como este, y cualquier solución? gracias por adelantado.
Aquí está mi diseño xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/layoutDashboard" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/border_shape" android:orientation="vertical" android:paddingTop="1sp" > <EditText android:id="@+id/editxtKeyword" android:layout_width="fill_parent" android:layout_height="43dp" android:layout_marginLeft="1dp" android:layout_marginRight="1dp" android:layout_marginTop="2dp" android:ems="10" android:hint="@string/editxtKeyword_hint" android:singleLine="true" > </EditText> <HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_gravity="center_vertical" android:layout_weight="0.30" android:paddingBottom="2dp" android:paddingLeft="1dp" android:scrollbars="none" > <LinearLayout android:id="@+id/layoutButtons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" android:layout_marginTop="0dp" android:layout_marginBottom="1dp" android:layout_marginLeft="1dp" android:layout_marginRight="1dp" android:orientation="horizontal" > < <Button android:id="@+id/btnAk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="1dp" android:background="@drawable/custom_button_shape" android:text="asd" /> <Button android:id="@+id/btnCm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="1dp" android:background="@drawable/custom_button_shape" android:text="csm" /> </LinearLayout> </HorizontalScrollView> </LinearLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webV" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/linlaylay1" android:visibility="visible" /> <WebView android:id="@+id/webVAnalytics" android:layout_width="1dp" android:layout_height="0dp" android:visibility="invisible" /> <WebView android:id="@+id/WebVSahibinden" android:layout_width="1dp" android:layout_height="0dp" android:visibility="invisible" /> <LinearLayout android:id="@+id/linlaylay1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_margin="0dp" android:orientation="vertical" android:padding="0dp" > <com.google.ads.AdView android:id="@+id/adViewSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" ads:adSize="BANNER" ads:adUnitId="a123123" ads:loadAdOnCreate="true" ads:testDevices="TEST_EMULATOR" /> </LinearLayout> </RelativeLayout> </LinearLayout> <LinearLayout android:id="@+id/layoutProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|center_horizontal" android:layout_marginBottom="50dp" android:layout_marginTop="5dp" android:background="@drawable/progress_shape" android:padding="2dp" android:visibility="invisible" > <TextView android:id="@+id/lblLoading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2dp" android:text="@string/msg_loading" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" /> <ImageButton android:contentDescription="@string/dialog_cancel" android:id="@+id/btnStop" android:layout_width="30dp" android:layout_height="30dp" android:src="@drawable/stop" /> </LinearLayout> </FrameLayout>
- Las transmisiones en directo de Youtube en la vista web de Android son nerviosas
- Cómo llamar al método Javascript desde la vista web en Android
- ¿Cómo comprobar si WebView está completamente procesado y listo para funcionar?
- Cómo obtener la página en blanco en Android WebViewClient
- Android WebView - Configuración del enfoque de campo HTML con Javascript
- Detener evento táctil de ser interceptado por ViewPager si hay evento táctil en la vista web
- WebViewClient que no llama shouldOverrideUrlLoading
- ¿Agente de usuario móvil de Android?
Existen muchos problemas al mostrar vistas aceleradas de hardware encima de cada uno. Volvería a trabajar su diseño para no superponer las vistas web o vistas de desplazamiento, o desactivar la aceleración de hardware.
Un error conocido
Puede desactivar la aceleración de hardware en su WebView, pero asegúrese de hacerlo de una manera que no rompa los dispositivos antiguos:
if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB){ //mWebView is some WebView mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); }
Advertencias
- Los videos no se reproducen en el navegador
- El desplazamiento no será casi tan suave
Esto se arregla en Jelly Bean según el error pero no he podido verificarlo personalmente.
He visto este problema con vistas únicas en teléfonos HTC. Uno de los comentarios en este subproceso hace algunas sugerencias para ayudar a optimizar el rendimiento de WebView. El error es sobre transformaciones en 3D, pero he encontrado que las técnicas del comentario son útiles para WebViews en general.
Esta presentación en Google I / O 2012 también proporciona una buena información sobre el tema de WebViews, en general.
Ambos sugieren que el contenido dinámico se coloque en una "capa". Esto significa asignar esta regla CSS al elemento:
-webkit-transform: translate3d(0, 0, 0);
Al aplicar esta regla, Android "le dice al navegador que precompile la capa en su propia textura para que pueda ser animada más tarde para (casi) libre" Este comportamiento no es gratis – puede consumir más memoria por lo que lo aplicaría de manera juiciosa. La presentación adjunta hace un buen trabajo explicando por qué.
En mi caso, pude evitar una "pantalla blanca" al aplicar esta regla a un DIV que envuelve toda la página. A veces, la página se vuelve blanca durante un segundo y luego se procesa el contenido. No he visto la página "blanca" persistir para siempre como lo hice antes de aplicar esta técnica. No vi un consumo de memoria fuera de control. YMMV.
También sugiero que haga lo que pueda para simplificar su diseño. Más fácil decirlo que hacerlo, pero algunas buenas sugerencias se pueden encontrar en los documentos .
- El teclado androide mueve las pestañas
- ¿Distinguir entre el tiempo de espera de la pantalla y el botón de encendido?