防止由于固有的 WebView 行为而导致不必要的闪烁

2023-12-04

我正在使用 Android WebView 来显示一些 HTML 内容(String准确地说,带有 HTML 标签)在运行时生成。内容基本上都是 HTML<table ...>显示各种内容,该表的行是由我的程序生成的。 HTML 内容通过调用加载到我的 WebView 中loadDataWithBaseUrl() method.
现在每次我生成一个新行时,我都会创建一个新行<tr></tr>并修改 HTML 字符串以将新创建​​的行添加到表中。 显然我必须回忆起loadDataWithBaseUrl()方法重新加载 HTML 并显示最新行。

现在这里有几个问题:
First)每次loadDataWithBaseUrl()被调用时,WebView滚动到页面顶部Second)我想滚动WebView之后它会一直加载到页面底部,以便始终显示最新生成的行。

现在实际问题是:
如果我尝试打电话WebView's pageDown(true)页面加载完成后,我会看到一个令人讨厌的动画,并且用户必须等待 WebView 完成滚动到页面底部。
由于似乎没有任何方法可以禁用这种上下跳跃行为,因此我求助于 JavaScript,并在页面加载后将页面一直滚动到底部(调用window.onload)
现在我面临另一个问题!仍然存在由 WebView 重新加载页面引起的闪烁,导致页面一直向上滚动,并且 JavaScript 函数将页面立即滚动到底部。

在过去的几天里我花了无数的时间,但仍然没有找到一种方法来达到我想要的结果。有办法解决这个问题吗? (也许是解决方法/不同的策略?)罪魁祸首显然是 WebView 的固有行为,当它完成加载页面时,它会滚动到顶部。


你能尝试这样的事情吗:

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

防止由于固有的 WebView 行为而导致不必要的闪烁 的相关文章