我在我的某个应用程序中遇到了使用webview显示的问题。
当我调用loadData时,webview首先显示文本,然后加载页面的图像(标准行为)。
有时,如果这些图像修改文本位置,则不会清除旧文本位置,并显示旧文本和新文本+图像
此处显示问题发生时的截图:
就像webview没有正确地重新绘制它的内容。当然,一个简单的invalidate()不起作用......
它不会经常发生,但可以说超过20次。
用于显示数据的代码(在Activity生命周期方法之外调用):
// 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);
知道如何解决这个问题吗?
答案 0 :(得分:7)
我终于找到了解决问题的方法。
删除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);
因为我的WebView背景空白,所以对我来说没问题。也许这对其他人来说可能很烦人。
确定这是一个WebView错误。
答案 1 :(得分:1)
如果您将WebView
设置为特定尺寸,而不是"wrap_content"
,则在加载数据后,webview不会正确调整其内容的大小。
我认为这是小部件的错误..
所以..
尝试在"wrap_content"
属性中使用layout_height
。
答案 2 :(得分:1)
我经常遇到零星的问题,在使用loadDataWithBaseUrl加载内容后,WebViews无法正常显示。尽管WebView的高度设置为wrap_content,但WebView并不总是调整大小以包装内容。相反,webview的高度为零。有时它会显示罚款,有时则不会。有时,问题只会发生在纵向方向,景观才能正常工作。我尝试删除我的setBackgroundColor调用,但它没有帮助。但是,通过将WebView所处的布局从LinearLayout更改为RelativeLayout,我今天能够解决问题。
答案 3 :(得分:0)
尝试
mWebView.setBackgroundColor(0x00ff0000);
答案 4 :(得分:0)
调用 loadDataWithBaseURL()方法后,您只需调用 refreshDrawableState()方法 它将解决您的问题
mWebView.loadDataWithBaseURL(null, webtext, "text/html", "UTF-8", null);
mWebView.refreshDrawableState();