WebView加载数据时滚动设置直到点击后才更新

3
我使用loadData()和reload()更新webView中的html。虽然我成功地显示了新数据,但页面的滚动未更新。我想保持页面视图在底部。即使等待很长时间,它仍然不会更新。一旦我点击webView,滚动条就会调整,我就可以拖到页面底部并查看新文本。
我尝试过的方法: - 在onPageFinished()中多次设置和调用。由于getContentHeight()尚未更改,因此都没有起作用。我还尝试过scrollTo(100 + getContentHeight),但也无效。 - pageDown(true)
- 在reload()后调用requestLayout() - browser.requestFocusFromTouch() - 仍然不行,我考虑模拟我的点击。 - 添加几个br标签。这有点有效,但br的数量必须等于新文本的行数。由于新行数不是可以根据方向和屏幕变量精确确定的内容,因此这不是一个好的解决方法。
有什么想法吗?谢谢!
1个回答

5
如果你希望webview在加载完成后滚动到底部,我发现我必须在onNewPicture中使用pageDown(true)。(我认为这是在视图完成绘制时触发的事件。)
所以代码看起来像这样:
   webView.setPictureListener( new WebView.PictureListener() {

        public void onNewPicture(WebView view, Picture picture) {
            webView.pageDown(true);
        }
    }

使用pageDown的不幸问题是会在页面上产生可见的滚动;我在寻找其他跳转到webView底部的方式时遇到了问题!(尽管我还没有尝试进入WebView并使用JavaScript。)

我一定又遇到了一个小故障。在向下翻页时,我看到页面闪烁(耶!以前从未出现过这种情况),但它却跳转到了原始页面的末尾。由于contentHeight没有更新,所以它跳转到了虚假的页面末尾。唉! - Jim
我将此标记为已回答,因为对我来说pageDown(true)正在触发。我问了另一个关于如何重新计算contentHeight的问题。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接