RecycleView 滑动到底部后,向下滑动连带BottomShee一起滑动
时间: 2023-06-01 16:02:00 浏览: 115
上下左右 同时滑动的Recyclerview
3星 · 编辑精心推荐
要实现这个功能,需要在RecyclerView的OnScrollListener中监听滑动事件,当RecyclerView滑动到底部时,将BottomSheet的状态设置为STATE_COLLAPSED,然后再将RecyclerView滑动事件交给BottomSheet处理,这样就能实现滑动RecyclerView时连带BottomSheet一起滑动的效果。
以下是示例代码:
```
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (!recyclerView.canScrollVertically(1)) {
// RecyclerView滑动到底部
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
recyclerView.setNestedScrollingEnabled(false);
bottomSheet.setNestedScrollingEnabled(true);
} else {
recyclerView.setNestedScrollingEnabled(true);
bottomSheet.setNestedScrollingEnabled(false);
}
}
});
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
recyclerView.setNestedScrollingEnabled(true);
bottomSheet.setNestedScrollingEnabled(false);
}
}
});
```
在RecyclerView的OnScrollListener中,我们使用canScrollVertically(1)方法来检查RecyclerView是否可以向下滑动(1表示向下滑动)。如果不能向下滑动,就将BottomSheet的状态设置为STATE_COLLAPSED,并将RecyclerView的嵌套滑动功能禁用,同时启用BottomSheet的嵌套滑动功能。如果可以向下滑动,就反之。
在BottomSheet的BottomSheetCallback中,我们监听BottomSheet的状态变化,如果BottomSheet的状态变为STATE_COLLAPSED,就将RecyclerView的嵌套滑动功能启用,同时禁用BottomSheet的嵌套滑动功能。这样就能实现滑动RecyclerView时连带BottomSheet一起滑动的效果。
阅读全文