18

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

 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 重新渲染页面?

4

1 回答 1

6

好吧,我在该平板电脑上遇到了完全相同的问题,唯一的区别是我使用iscroll进行所有滚动。我为这个问题使用的解决方案是通过 JavaScript “滚动”一个隐藏的 DIV 并解决了这个问题。我希望这可以帮助任何有同样问题的人。如果您使用 iscroll 他们有一种方法可以“滚动”到固定位置,也许这​​也可以帮助您,如果不是那么难检测到touchmovemousemove事件。这里的要点是,即使不可见,您只需要在 html 上的任何位置伪造滚动即可。

于 2012-07-27T15:59:35.060 回答