在用户交互之前,Android WebView 无法完全呈现内容
Posted
技术标签:
【中文标题】在用户交互之前,Android WebView 无法完全呈现内容【英文标题】:Android WebView Fails to Completely Render Content Until User Interaction 【发布时间】:2012-05-10 08:51:07 【问题描述】:我有一个自定义类扩展显示 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 重新渲染页面?
【问题讨论】:
运气好吗?有类似的问题。这在 Jelly Bean 中运行良好,但在 ICS 中一直存在。 即使在果冻豆上我也有这个确切的问题。不过它在 Kitkat 上运行良好。 【参考方案1】:好吧,我在这台平板电脑上遇到了完全相同的问题,唯一的区别是我使用 iscroll 进行所有滚动。我为这个问题使用的解决方案是通过 javascript “滚动”一个隐藏的 DIV 并解决了这个问题。我希望这可以帮助任何有同样问题的人。如果您使用 iscroll 他们有一种方法可以“滚动”到固定位置,也许这也可以帮助您,如果不是那么难检测到 touchmove 或 mousemove事件。 这里的重点是,即使不可见,您只需要在 html 上的任意位置伪造滚动即可。
【讨论】:
以上是关于在用户交互之前,Android WebView 无法完全呈现内容的主要内容,如果未能解决你的问题,请参考以下文章
Android中WebView的JavaScript代码和本地代码交互的三种方式