当滚动位置在顶部时 SwipeRefreshLayout + WebView [英] SwipeRefreshLayout + WebView when scroll position is at top
问题描述
我正在尝试将 SwipeRefreshLayout 与 WebView 结合使用.
I'm trying to use SwipeRefreshLayout with WebView.
我面临的问题是在页面中间,当用户向下滚动时,会出现不需要的刷新.
I'm facing the problem where in the middle of page, when user scrolls down, unwanted refresh kicks in.
如何使刷新事件仅在 webview 的滚动位置位于顶部时发生.(即,他正在查看页面的顶部)?
How do I make the refresh event only happen when webview's scroll position is at the top. (ie, he's looking at the top portion of the page)?
推荐答案
我已经设法解决了它,而无需扩展任何东西.看看这个片段(特定于片段的):
I've managed to solve it without having to extend anything. Have a look at this snippet (Fragment-specific):
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 的回答.
For a broader context, have a look at my answer to Android - SwipeRefreshLayout with empty textview.
这篇关于当滚动位置在顶部时 SwipeRefreshLayout + WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!