问题描述:
首先我的布局是这样的,在NestedScrollView里面存在三个RecyclerView,然后使用折叠布局后,滑动上面的两个RecyclerView顶部不会折叠。
解决办法:
为不可折叠区域的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一样,触发折叠。