我已经看到了另一个关于此的 SO 问题,但没有解决。
我将 LoadData() 与应用程序生成的 html 一起使用。
我注意到当我在新文本之后添加几行空白行时,页面滚动并且文本需要一段时间才能神奇地出现(没有滚动,它只是以淡入方式出现。)。
观看 .getContentHeight() 它不会在 onPageFinshed() 事件中更新,但会在页面上后续添加文本时更新。
我创建了一个计时器事件来观看 getContentHeight。即使在我发现 getContentHeight 已更改并发出 browser.pageDown(true) 之后,页面仍然滚动到底部。
第一次进入活动时,它似乎工作正常。我的问题只发生在我在 newInnerHTML 中附加几行时。
此外,所涉及的视图有一个页眉和页脚,中间是浏览器。webView 不在页脚后面。
这是一个错误,还是我错过了什么?
TIA,吉姆
此代码在活动的 onCreate 中。
final WebView browser = (WebView) findViewById(R.id.webview);
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(browser, url);
// browser.computeScroll(); //didn't help
Log.d(TAG,"page getContentHeight: " + browser.getContentHeight());
Log.d(TAG,"page finished");
browser.pageDown(true);
}
});
此方法在活动的 onCreate 之后
私人无效更新消息显示(){
//loadData fires onPageFinished but without the new data
browser.loadData("<html><body>" + newInnerHTML + "</body></html>", "text/html", "utf-8");
//reload() again fires onPageFinished but this time with new data
browser.reload();
}