Android WebView 在用户交互之前无法完全渲染内容

2024-01-06

我有一个扩展 WebView 的自定义类,用于显示 HTML 内容。当用户单击 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 有可能无法渲染整个文档。矩形的空白块显示在文本应该出现的位置,每次看起来都是随机放置的。这是一个屏幕截图:https://i.stack.imgur.com/mlsKj.jpg https://i.stack.imgur.com/mlsKj.jpg

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

到目前为止,此行为仅限于 Samsung Galaxy 10.1" 平板电脑。

有谁知道解决方法/如何强制 webkit 重新渲染页面?


好吧,我在使用该平板电脑时遇到了完全相同的问题,唯一的区别是我正在使用iscroll http://cubiq.org/iscroll-4完成所有滚动。我针对此问题使用的解决方案是通过 JavaScript“滚动”隐藏的 DIV,从而解决了问题。我希望这可以帮助任何有同样问题的人。如果您使用 iscroll,他们有一种“滚动”到固定位置的方法,也许这也可以帮助您,如果没有,也不是很难检测到触摸移动 or 鼠标移动事件。这里的要点是,你只需要在 html 上的任何地方伪造一个滚动,即使它不可见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android WebView 在用户交互之前无法完全渲染内容 的相关文章