前言
最近在学习的过程中,遇到了一个问题:需要ScrollView滑动显示信息,但同时有需要使用SwipeRefreshLayout实现下拉刷新,这两个控件都会检测用户滑动的动作,由于事件的分派的问题,这个时候就会发生冲突。
解决原理
在ScrollView还没有到达第一条数据顶部的时候,就设置SwipeRefreshLayout为不可操作状态,那么检测SwipeRefreshLayout的滚动分发就不起作用了
解决方案
if (scrollView != null) {
scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (swipeRefreshLayout != null) {
swipeRefreshLayout.setEnabled(scrollView.getScrollY() == 0);
}
}
});
}