因为最近要把学校的电子商务的比赛的项目做完,主界面是一个标题栏悬停,我是用CoordinatorLayout嵌套RecycleView做的,但是做完以后发现一个问题,就是当RecycleView下拉如果不是滑动到第一个item,再滑动AppBarLayout,就无法下拉了,卡住了,我以为这个问题找了好多方法,也问了好多人,觉得是滑动冲突问题,虽然有这个问题的存在,但是单单靠禁止recycleview的滑动,是无法解决这个问题

这个是我在CoordinatorLayout中嵌套的,总的布局是这样子的:

后来我就想,如果我判断是不是只要监听recycleview滑动到了第一个item,就可以让appbar顺利滑动下拉
我现在就展示我的代码:

为recycleview设置一个监听器,监听状态的变化,里面有一个参数是state,我们看看源码这么说的?

中文意思就是时候recycleview没有滑动
然后我们就用LinerLayoutManager获取recycleview的第一个item,因为第一个item的position为0,然后判断,当为0的时候,appbar就展开
setExpanded(Boolean,Boolean);这个方法我们看一下源码:



第一个参数,大家也看到了,是要传入什么,ture的话就是强制展开,第二个也要为true,就是等待被展开,一般是同时设置为true,然后效果是
当recycleview下拉,appbarlayout也展开了,但是还有一个问题,就是有弹簧效果,这个看需求,看你要不要这个效果,我觉得还是可以的,,毕竟挺好玩的。
我的项目源码我已经上传到了GitHub,希望大家mark一下,毕竟资源共享

网友评论