Problema de redibujo de WebView al cargar datos
Me encuentro con un problema de mostrar con una webview que estoy usando en una de mi aplicación.
Cuando llamo a loadData, la vista web primero muestra el texto y luego carga las imágenes de la página (comportamiento estándar).
- Reaccionar WebView nativo html <select> no abre opciones en tablets Android
- El bloqueo del sistema al reemplazar shouldInterceptRequest en WebViewClient
- ¿Tiene el nuevo Android WebView el mismo rendimiento que CrossWalk WebView?
- ¿Cómo manejar los idiomas RTL en las versiones anteriores a la versión 4.2 de Android?
- Android móvil twitter página en webview no abrir?
A veces, si esas imágenes modifican la posición del texto, la posición del texto antiguo no se borra y se muestra tanto el texto viejo como el nuevo texto + imagen
Aquí una captura de pantalla de lo que parece cuando ocurre el problema:
Es como si la webview no redibuja correctamente su contenido. Por supuesto un simple invalidate () no funciona …
No ocurre a menudo, pero permite decir una vez más de 20.
Código utilizado para mostrar los datos (llamados fuera de los métodos del ciclo de vida de la actividad):
// Include the html headers to the content received from WS String webtext = String.format(ConfigApp.HTML_BODY, wsdata.getText()); mWebView.setWebChromeClient(...); mWebView.setWebViewClient(...); mWebView.setBackgroundColor(0); mWebView.loadDataWithBaseURL(null, webtext, "text/html", "UTF-8", null);
¿Algúna idea de cómo arreglar esto?
- Abrir un menú de carga de archivos en una vista web no funciona
- Añadir javascript a WebView
- HoloEverywhere CLassNotFoundException al usar WebView
- Las imágenes no se cargan en la vista web de android
- Mostrar caracteres acentuados en la vista web
- Cómo deshabilitar completamente el teclado virtual para todas las entradas en la vista web de Android
- Inicio y fin de solicitudes de registro HTTP desde WebView incorporado de Android
- Cómo cargar URL en Android Web View si HTTP o HTTPS no se incluyen en la URL dada
Finalmente he encontrado una manera de arreglar el problema.
Quite el fondo transparente de WebView:
String webtext = String.format(ConfigApp.HTML_BODY, wsdata.getText()); mWebView.setWebChromeClient(...); mWebView.setWebViewClient(...); // mWebView.setBackgroundColor(0); mWebView.loadDataWithBaseURL(null, webtext, "text/html", "UTF-8", null);
Debido a que mi WebView tiene un fondo en blanco está bien para mí. Tal vez puede ser molesto para alguien más.
Seguro que es un error de WebView.
Con frecuencia he tenido problemas esporádicos con WebViews que no se muestran correctamente después de haber cargado contenido con loadDataWithBaseUrl. Aunque la altura de WebView se estableció en wrap_content, el WebView no siempre redimensionaría para envolver el contenido. En su lugar, la vista web tenía una altura de cero. A veces se muestra bien y otras veces no lo haría. A veces el problema sólo sucedería en una orientación vertical y el paisaje funcionaría bien. Intenté quitar mi llamada de setBackgroundColor pero eso no ayudó. Sin embargo, pude conseguir el problema para ir lejos hoy cambiando el diseño que el WebView estaba adentro de un LinearLayout a un RelativeLayout.
Si establece su WebView
en un tamaño específico y no "wrap_content"
, después de que se carguen los datos, la vista web no cambia el tamaño de su contenido correctamente.
Creo que es un error con el widget ..
Asi que..
Intente usar "wrap_content"
en el atributo layout_height
.
Tratar
mWebView.setBackgroundColor(0x00ff0000);
Sólo tienes que llamar al método refreshDrawableState () después de llamar al método loadDataWithBaseURL () y resolverá tu problema
mWebView.loadDataWithBaseURL(null, webtext, "text/html", "UTF-8", null); mWebView.refreshDrawableState();
- Android: Error popup en EditText no se mueve hacia abajo cuando el teclado desaparece
- ¿Qué es una región no válida en Android?