Android webview 使用引导模式拉刷新问题

问题描述 投票:0回答:2
android webview bootstrap-modal
2个回答
0
投票

当webview滚动Y不为0时,需要禁用下拉刷新。请检查以下代码:

    pullToRefresh.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            if (webView.getScrollY() == 0)
                pullToRefresh.setEnabled(true);
            else
                pullToRefresh.setEnabled(false);
        }
    });

使用此功能,您在网络视图中滚动到顶部时将不会看到问题。


0
投票

我遇到的唯一解决方案是禁用具有 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

© www.soinside.com 2019 - 2024. All rights reserved.