我正在尝试将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的回答。