两种方法:
第一种,利用recycleView内部方法
recyclerView.setHasFixedSize(true);
recyclerView.setNestedScrollingEnabled(false);
第二种,重新LayoutManager
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this) {
@Override
public boolean canScrollVertically() {
return false;
}
};
第一种方式,setHasFixedSize(true)方法使得RecyclerView能够固定自身size不受adapter变化的影响;而setNestedScrollingeEnabled(false)方法则是进一步调用了RecyclerView内部NestedScrollingChildHelper对象的setNestedScrollingeEnabled(false)方法:
public void setNestedScrollingEnabled(boolean enabled) {
getScrollingChildHelper().setNestedScrollingEnabled(enabled);
}
NestedScrollingChildHelper对象通过该方法关闭RecyclerView的嵌套滑动特性,如下
public void setNestedScrollingEnabled(boolean enabled) {
if (mIsNestedScrollingEnabled) {
ViewCompat.stopNestedScroll(mView);
}
mIsNestedScrollingEnabled = enabled;
}
如此限制了RecyclerView自身的滑动,使得整个页面滑动仅依靠ScrollView实现,即解决滑动卡顿的问题
第二种方式,使得RecyclerView的垂直滑动始终返回false,其目的同样是为了限制自身的滑动