CoordinatorLayout嵌套多个Recyclerview
来源:互联网 发布:菏泽教务网络管理系统 编辑:程序博客网 时间:2024/06/17 12:29
要做一个功能,使用Design Support Library的滑动折叠。滑动下方纵向的RecyclerView,折叠上方的图片。同时,纵向RecyclerView嵌套一个横向RecyclerView,支持左右滑动数字。
参考官方demo,很容易使用CoordinatorLayout和CollapsingToolbarLayout实现。添加纵向RecyclerView的时候,一切正常,但接着添加横向RecyclerView时,滑动明显出bug,上方的图片无法自动折叠。
非横向RecyclerView的区域可以正常触发折叠,容易确定是横向RecyclerView的事件没有传递到CollapsingToolbarLayout。纵向RecyclerView已经设定了app:layout_behavior,内部的所有view都可以正常触发折叠,横向的RecyclerView理应也可以。
public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild
查看RecyclerView的implements,NestedScrollingChild引起了我的注意,明显写着“嵌套”嘛。Android新引入NestedScrollView代替ScrollView,应该是为了解决滑动下嵌套的问题。
请教Google大神,最终为横向RecyclerView增加一句setNestedScrollingEnabled(false),问题解决。
具体的代码看CollapsingToolbarLayoutActivity
,一个我用来验证代码的工程,里面乱七八糟的。
在事件分发模型中,手指down、move、up整个滑动过程,一旦有View决定拦截这个事件,那么整个事件过程都交由它来处理,其他View没有机会再处理了。
新的嵌套滑动机制增加支持子View和父View共同处理滑动事件的能力,子View处理事件的时候,能通知父View同时处理。
CoordinatorLayout实现了NestedScrollingParent,纵向RecyclerView是CoordinatorLayout的子View,RecyclerView的滑动能通知到CoordinatorLayout,继而由CoordinatorLayout协调让CollapsingToolbarLayout发生折叠。
上面出bug的原因也能理解了,横向RecyclerView的父View是纵向RecyclerView,而RecyclerView只实现了NestedScrollingChild,无法像CoordinatorLayout一样响应。所以要关闭横向RecyclerView的嵌套滑动功能,让横向RecyclerView如同其他嵌入纵向RecyclerView的view一样,触发折叠。
本文主要是讲解决bug的过程,知其然知其所以然,很有必要了解源码实现。Android工程师必须熟练掌握View的事件体系,下次要归纳总结。
- CoordinatorLayout嵌套多个Recyclerview
- CoordinatorLayout与NestedScrollView嵌套RecyclerView滑动问题
- CoordinatorLayout与NestedScrollView嵌套RecyclerView使用中的坑
- CoordinatorLayout与NestedScrollView嵌套RecyclerView使用中的坑
- SwipeRefreshLayout 、RecyclerView 与 CoordinatorLayout 嵌套刷新滑动冲突的解决办法
- CoordinatorLayout与NestedScrollView嵌套RecyclerView使用中的坑
- 解决ScrollView嵌套RecyclerView 滑动卡顿和嵌套多个RecyclerView 显示不全的问题
- RecyclerView嵌套多个Edittext遇到的一些问题
- 解决ScrollView里嵌套多个RecyclerView时,RecyclerView数据显示不全的问题
- RecyclerView嵌套RecyclerView
- RecyclerView嵌套RecyclerView
- recyclerview嵌套recyclerview
- RecyclerView嵌套RecyclerView
- RecyclerView嵌套RecyclerView
- RecyclerView嵌套RecyclerView
- recyclerview嵌套recyclerview
- Recyclerview 嵌套Recyclerview
- RecyclerView嵌套RecyclerView
- bzoj1050: [HAOI2006]旅行comf(最小生成树)
- 软件包的安装
- 本地MySQL与WAMP集成的MySQL冲突
- 中国工程院院士倪光南:“中兴被罚” 源于核心技术受制于人 丨2017通信行业物联网大会
- 守护者观察 | 10元1000钻?小心低价充值游戏圈套!
- CoordinatorLayout嵌套多个Recyclerview
- 百度收购硅谷科技公司xPerception 增强机器视觉核心能力
- static类型
- 三次握手,四次挥手2.0
- ElasticSearch安装及词频排序
- 【比特币】 A Design of Bitgold
- 197. Rising Temperature
- 逻辑斯蒂回归(对数几率回归)
- 深度三维残差神经网络:视频理解新突破