解决SmartRefreshLayoutSwipeRefreshLayout与RecyclerView下拉冲突的问题

it2026-03-19  2

我遇到的场景是这样的,如下图: 滑动到顶部继续滑动,此时下滑item,整个蓝色区域(CoordinatorLayout)会随着下滑而不是item下滑

解决方案一:

判断最顶部的数据是否显示(getTop == 0?),第一个数据不在顶部的话设置父布局不可滑动

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { //解决RecyclerView和smartRefreshLayout滑动冲突问题 super.onScrolled(recyclerView, dx, dy); int topRowVerticalPosition = (recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop(); smartRefreshLayout.setNestedScrollingEnabled(topRowVerticalPosition >= 0); } });

解决方案二:

使用替代方案: https://github.com/laenger/ViewPagerBottomSheet

最新回复(0)