在做项目的时候可能遇到过根据不同场景设置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就可以设置是否可以滑动了