- 解决ScrollView嵌套RecyclerView的显示及滑动
- 解决ScrollView嵌套RecyclerView的显示及滑动
- 解决ScrollView嵌套RecyclerView的显示及滑动
- RecyclerView的item中嵌套Scrollview的滑
- ScrollView与RecyclerView嵌套使用时,列表滑
- 解决ScrollView嵌套RecyclerView 滑动卡顿问
- ScrollView嵌套Recyclerview显示不全问题
- Android ScrollView嵌套Recyclerview
- ScrollView中Recyclerview踩坑
- ScrollView嵌套RecyclerView显示不完整,以及
冲突:
1.页面滑动卡顿
2.ScrollView高度显示不正常
3.RecyclerView内容显示不全
问题分析:
事件分发机制 :事件 move up down
当用户去滑动页面,子控件消费了事件之后,那么父控件就不会再有机会处理这个事件啦
解决:
从NestedScrollView看嵌套机制
1.NestedScrollView简单地说就是支持嵌套滑动的ScrollView, 内部逻辑简单, 而且它既可以是内控件, 也可以是外控件, 所以选择分析它来了解嵌套滑动机制.
2.利用RecyclerView内部方法
recyclerView.setHasFixedSize(true);
recyclerView.setNestedScrollingEnabled(false);
2.setHasFixedSize(true)方法使得RecyclerView能够固定自身size不受adapter变化的影响;而setNestedScrollingeEnabled(false)方法则是进一步调用了RecyclerView内部NestedScrollingChildHelper对象的setNestedScrollingeEnabled(false)方法,如下
publicvoidsetNestedScrollingEnabled(booleanenabled){ getScrollingChildHelper().setNestedScrollingEnabled(enabled);}
3.进而,NestedScrollingChildHelper对象通过该方法关闭RecyclerView的嵌套滑动特性,如下
如此一来,限制了RecyclerView自身的滑动,整个页面滑动仅依靠ScrollView实现,即可解决滑动卡顿的问题
4.重写LayoutManager
LinearLayoutManager linearLayoutManager =newLinearLayoutManager(this) {
@Override public boolean canScrollVertically(){
returnfalse;
}};
5.这一方式使得RecyclerView的垂直滑动始终返回false,其目的同样是为了限制自身的滑动
网友评论