当webview滚动Y不为0时,需要禁用下拉刷新。请检查以下代码:
pullToRefresh.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (webView.getScrollY() == 0)
pullToRefresh.setEnabled(true);
else
pullToRefresh.setEnabled(false);
}
});
使用此功能,您在网络视图中滚动到顶部时将不会看到问题。
我遇到的唯一解决方案是禁用具有 Bootstrap 模式的网站的滑动刷新。 基本上,我们将使用
webView.evaluateJavascript()
函数注入 javaScript 代码来检测 Bootstrap 模态。
webView.evaluateJavascript(
"(function() { " +
"var modals = document.querySelectorAll('.modal'); " +
"if (modals.length > 0) { " +
"window.androidInterface.hasBootstrapModals(true); " +
"} else { " +
"window.androidInterface.hasBootstrapModals(false); " +
"} " +
"})()",
null);
webView.addJavascriptInterface(new WebAppInterface(), "androidInterface");
public class WebAppInterface {
@JavascriptInterface
public void hasBootstrapModals(boolean hasModals) {
// Disable swipe-to-refresh if modals are present
if (hasModals) {
disableSwipeToRefresh();
} else {
enableSwipeToRefresh();
}
}}
JavaScript 代码会扫描 DOM 中 .modal 类的元素,该类通常与 Bootstrap 模态相关联,如果找到模态,将使用布尔值调用 hasBootstrapModals 函数。 注意:在调用之前请确保页面已加载
webView.evaluateJavascript