美文网首页
解决ScrollView嵌套RecyclerView的显示及滑动

解决ScrollView嵌套RecyclerView的显示及滑动

作者: 你又没胸凶什么凶_b385 | 来源:发表于2019-04-17 10:36 被阅读0次
布局样式 内部布局

 冲突: 

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,其目的同样是为了限制自身的滑动

相关文章

网友评论

      本文标题:解决ScrollView嵌套RecyclerView的显示及滑动

      本文链接:https://www.haomeiwen.com/subject/hajseqtx.html