美文网首页
记一个比较奇葩的bug

记一个比较奇葩的bug

作者: 吾心彳亍 | 来源:发表于2020-08-18 15:34 被阅读0次
    picture.png

    问题描述:
    首先我的布局是这样的,在NestedScrollView里面存在三个RecyclerView,然后使用折叠布局后,滑动上面的两个RecyclerView顶部不会折叠。

    解决办法:


    image.png

    为不可折叠区域的RecyclerView设置 setNestedScrollingEnabled(false);

    问题分析:
    在事件分发模型中,手指down、move、up整个滑动过程,一旦有View决定拦截这个事件,那么整个事件过程都交由它来处理,其他View没有机会再处理了。

    新的嵌套滑动机制增加支持子View和父View共同处理滑动事件的能力,子View处理事件的时候,能通知父View同时处理。

    CoordinatorLayout实现了NestedScrollingParent,纵向RecyclerView是CoordinatorLayout的子View,RecyclerView的滑动能通知到CoordinatorLayout,继而由CoordinatorLayout协调让CollapsingToolbarLayout发生折叠。

    上面出bug的原因也能理解了,横向RecyclerView的父View是纵向NestedScrollView,而NestedScrollView只实现了NestedScrollingChild,无法像CoordinatorLayout一样响应。所以要关闭横向RecyclerView的嵌套滑动功能,让横向RecyclerView如同其他嵌入NestedScrollView的view一样,触发折叠。

    相关文章

      网友评论

          本文标题:记一个比较奇葩的bug

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