我正在使用webView在我的Android应用中显示一些内容:
WebView webView = (WebView) rootView.findViewById(R.id.web_view);
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.loadUrl("about:blank");
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
这在ICS及以下版本中完美无缺,但在JB及以上版本中,页面首次加载正确(一般为2到5/6次)。之后,webView显示为空白。即使在调试之后,代码似乎正常运行,它只是不显示。查看页面的唯一方法是终止应用程序并重新启动它,然后再次发生。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
为什么在webView.loadUrl("about:blank")
电话之前有loadData
?如果删除about:blank
加载,它会有帮助吗?
此外,“未显示”非常模糊 - 内容是否已加载但未呈现或页面无法导航到?检查您从WebViewClient.onPageStarted
/ onPageFinished
回调中获得的网址。如果您从loadData
致电onPageFinished
,如果url ==“about:blank”,如果这是导航问题,则可能会有所帮助。
答案 1 :(得分:0)
我用过
webView.loadData(htmlContent, "text/html; charset=UTF-8",null);
表示版本大于GINGERBREAD_MR1。
并且
webViewLivraison.loadDataWithBaseURL("",htmlContent, "text/html", "UTF-8", "");
适用于GINGERBREAD_MR1及以下版本。它对我来说很好。
试试这个并告诉我。
答案 2 :(得分:0)
在页面加载之前,每次尝试清除缓存,如果需要,还要尝试清除缓存。
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
答案 3 :(得分:0)
可能的原因导致" WebView在完成加载页面后变为空白":
如果布局xml文件中定义的WebView部件具有类似
的尺寸
android:layout_width="wrap_content"或
android:layout_height="wrap_content"
然后在加载页面之后,定义内容并且WebView尝试" wrap"因此,在某些情况下,将视图的尺寸缩小为0dp并使您的WebView不可见。 解决方案:将所有这些更改为fill_parent
android:layout_width="fill_parent" android:layout_height="fill_parent"
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); }