首页 > 解决方案 > Android webview pull to refresh问题与引导模式

问题描述

我对使用 webview 的 android 应用程序有疑问。我已将 webview 包裹在 swiperefreshlayout 中:

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/swiperefresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

当刷新被触发时,webview 被重新加载。这对我来说大部分时间都很完美。我遇到的问题是当网页滚动到顶部时,打开了一个高于 webview 的模式。在模态中向下滚动时一切正常,但是在尝试向上滚动时会发生问题。拖动刷新被触发。据我所知,这是因为模态后面的网页滚动到顶部,它认为它应该刷新。

有谁知道如何解决这个问题?

标签: androidwebviewbootstrap-modal

解决方案


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

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

使用它,您在 webview 中滚动到顶部时不会看到问题。


推荐阅读