原则上你使用的RecyclerView框架可能是自带刷新的,如果没有就可能会出现这种问题,滑动时会出现卡顿、触发刷新的时机也不对。



思路:

监听RecyclerView的滑动,当滑动到顶部的时候,再设置SwipeRefreshLayout刷新可用。



代码

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//解决mRecyclerView与mSwipeRefreshLayout在部分机型上滑动冲突
mSwipeRefreshLayout.setEnabled(recyclerView.getChildCount() == 0 || recyclerView.getChildAt(0).getTop() >= 0);
}
});



扩展

SwipeRefreshLayout 嵌套ScrollView 滑动冲突

ScrollView嵌套RecyclerView滑动卡顿