Android WebView无法在用户交互之前完全呈现内容

时间:2012-04-30 16:44:45

标签: android webkit webview scroll render

我有一个自定义类,扩展了显示HTML内容的WebView。当用户单击HTML文档中的链接时,我计算要滚动到的X值,然后使用scrollTo(x,y)通过runnable显示该位置(见下文)

 post( new Runnable() {

            @Override
            public void run() {

                scrollTo( x, 0 );
                MyWebView.this.invalidate();
                MyWebView.this.buildDrawingCache();
                MyWebView.this.refreshDrawableState();
                MyWebView.this.postInvalidate();
            }
        } );

滚动后,webview可能无法呈现整个文档。显示文本应该是的白色空间的矩形块,每次都看似随机放置。以下是截图:http://i.imgur.com/g192Y.jpg

当我触摸webview进行滚动时,它会立即渲染缺失的部分。

到目前为止,这种行为仅限于三星Galaxy 10.1“平板电脑。

有没有人知道解决方法/如何强制webkit重新呈现页面?

1 个答案:

答案 0 :(得分:6)

我在这个平板电脑上遇到了完全相同的问题,唯一的区别是我使用 iscroll 来完成所有滚动操作。我用于此问题的解决方案是通过JavaScript“滚动”一个隐藏的DIV并修复了问题。我希望这可以帮助任何有同样问题的人。如果你使用iscroll他们有一个“滚动”到固定位置的方法,也许这也可以帮助你,如果不是那么难以检测 touchmove mousemove 事件。 这里的要点是你只需要在html的任何地方伪造一个滚动即使看不见。