加载数据时WebView重绘问题

时间:2011-08-05 15:32:20

标签: android android-webview

我在我的某个应用程序中遇到了使用webview显示的问题。

当我调用loadData时,webview首先显示文本,然后加载页面的图像(标准行为)。

有时,如果这些图像修改文本位置,则不会清除旧文本位置,并显示旧文本和新文本+图像

此处显示问题发生时的截图:

webview redraw problem

就像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);

知道如何解决这个问题吗?

5 个答案:

答案 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();