我正在尝试将SwipeRefreshLayout与WebView一起使用。

我遇到的问题是,在页面中间,当用户向下滚动时,会出现不必要的刷新。

如何使刷新事件仅在webview的滚动位置位于顶部时发生。 (即,他正在查看页面的顶部)?

最佳答案

我设法解决了它,而无需扩展任何内容。看一下这个片段(特定于片段):

private ViewTreeObserver.OnScrollChangedListener mOnScrollChangedListener;

@Override
public void onStart() {
    super.onStart();

    swipeLayout.getViewTreeObserver().addOnScrollChangedListener(mOnScrollChangedListener =
            new ViewTreeObserver.OnScrollChangedListener() {
                @Override
                public void onScrollChanged() {
                    if (mWebView.getScrollY() == 0)
                        swipeLayout.setEnabled(true);
                    else
                        swipeLayout.setEnabled(false);

                }
            });
}

@Override
public void onStop() {
    swipeLayout.getViewTreeObserver().removeOnScrollChangedListener(mOnScrollChangedListener);
    super.onStop();
}

对于更广泛的背景,请看一下我对Android - SwipeRefreshLayout with empty textview的回答。

08-05 18:51