前言
最近在學習的過程中,遇到了一個問題:需要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);
}
}
});
}