我在 Android 中有一个 WebView,它存储我的应用程序的对话流。
该应用程序每 20 秒轮询一次服务器以查找任何消息并更新 WebView。
每次 WebView 更新时,它都会滚动回视图顶部。
我想阻止这种情况发生,所以我尝试使用 webView.pageDown(true);但这似乎总是返回 false。
任何帮助将非常感激。这是代码:
webView.loadDataWithBaseURL("fake://not/needed", html, "text/html", "utf-8", "");
boolean scrolled = webView.pageDown(true);
System.out.println("Scrolled is: " + scrolled);
我遇到了同样的问题,因此进一步调查并发现了以下相关内容:
- 为什么android webview pageDown()方法返回false? https://stackoverflow.com/questions/5644346/why-android-webview-pagedown-method-returns-false
- https://stackoverflow.com/questions/10064622/fix-scrollbar-to-bottom-of-web-view-in-android https://stackoverflow.com/questions/10064622/fix-scrollbar-to-bottom-of-web-view-in-android
我想出的唯一解决方案是创建一个处理程序,它将延迟 webView.pageDown(true) 的调用 100 毫秒,然后它就可以工作了。它可能需要更少或更多的时间,可能取决于 Web 视图组件渲染给定 html 所需的时间。
这是加载和滚动的代码:
webView.loadDataWithBaseURL("fake://not/needed", html, "text/html", "utf-8", "");
mWebViewScrollHandler.removeCallbacks(mScrollWebViewTask);
mWebViewScrollHandler.postDelayed(mScrollWebViewTask, 100);
这是处理程序的代码:
private final Handler mWebViewScrollHandler = new Handler();
private final Runnable mScrollWebViewTask = new Runnable() {
public void run() {
webView.pageDown(true);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)