在做项目的时候可能遇到过根据不同场景设置RV是否可以滑动,下面我就介绍我知道的两种方式。
第一种
如果RV外层嵌套的是NestedScrollView那就非常简单了,如下
//传true 可以滑动 false不可以滑动
RecyclerView.setNestedScrollingEnabled(boolean canScroll);
注意设置setNestedScrollingEnabled(false)后RV就不复用了。
第二种
自己定义一个LayoutManager,我就拿GridLayoutManager来说了 。垂直水平都可以设置,看代码就懂了。
public class XGridLayoutManager extends GridLayoutManager {
private boolean canScroll = true;
public XGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public XGridLayoutManager(Context context, int spanCount) {
super(context, spanCount);
}
public XGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) {
super(context, spanCount, orientation, reverseLayout);
}
/**
* 垂直方向
* @return
*/
@Override
public boolean canScrollVertically() {
return canScroll && super.canScrollVertically();
}
/**
* 水平方向
* @return
*/
@Override
public boolean canScrollHorizontally() {
return super.canScrollHorizontally();
}
/**
* 设置是否可以滑动
* @param canScroll
*/
public void setCanScroll(boolean canScroll) {
this.canScroll = canScroll;
}
}
在activity中直接setCanScroll就可以设置是否可以滑动了
本文介绍两种在项目中控制RecyclerView(RV)滑动状态的方法。第一种针对NestedScrollView嵌套场景,通过设置setNestedScrollingEnabled实现。第二种涉及自定义LayoutManager,如GridLayoutManager,允许在垂直和水平方向上控制滑动。
4972

被折叠的 条评论
为什么被折叠?



