置顶RecyclerView
来源:互联网 发布:淘宝上的气味图书馆 编辑:程序博客网 时间:2024/04/28 09:14
简介
置顶:如果要一个View滑动到顶部,然后置顶,保持不动;滑动回来,跟随RecyclerView一起滚动。
最近对原有框架进行技术改造,ListView要换成RecyclerView,RecyclerView确实要比ListView灵活、可定制。之前给予ListView置顶方案要移到RecyclerView上面,这次只做了一个View的置顶,针对之前的置顶技术实现进行了调整,ListView置顶方案请参考github分享。
技术实现方案
分析功能效果,关键点在于置顶的View不能跟随RecyclerView划出屏幕,在置顶时,置顶View肯定要浮在RecyclerView上面,也就是说一定要有两层View,里面RecyclerView+外面FrameLayout(或其他View)。按照这一思路,我实现了两种解决方案:
1、在将TopView放到外部的FrameLayout中,TopView是真实的View; RecyclerView内部有一个EmptyView,EmptyView相当于占位置的。EmptyView监控TopView的高度变化,改变自己的高度;TopView监控EmptyView的滑动,一直跟随EmptyView,当EmptyView滑出屏幕时,TopView在顶部保持不动。
2、同样有个TopView放到外部FrameLayout中;EmptyView在RecyclerView内部占位;真实的View——TrueView,并不等于TopView。当EmptyView在屏幕范围内时,TrueView add 到EmptyView中;当EmptyView向上滑出屏幕时,TrueView 被加到TopView中。
方案1是最早实现的,也是ListView置顶的实现方案,但是用过几个版本后发现,当滑动置顶的TopView时,因为TopView==TrueView,并浮动在RecyclerView上面,导致RecyclerView没办法感知滑动,事件传不过来。所以QA大大认为这是个bug,必须改!我就以方案2实现了。
参数扩展
有的业务需求很特别,他们要求距离顶部有一定距离时就开始置顶,没办法,我只好加了一个SetTopParams参数,里面参数可扩展。
代码地址和效果图
效果图如下所示,第一张是不置顶情况,第二张是普通置顶,第三张是距离顶部100px置顶。
源码和demo可以去github下载。
置顶RecyclerView地址
置顶ListView地址
不置顶情况:
普通置顶:
距离顶部100px置顶:
- 置顶RecyclerView
- recyclerview + 置顶 + swiperefreshlayout
- 侧滑recyclerView的置顶和删除
- RecyclerView Item置顶的优雅解决方案(点击置顶、刷新置顶等)
- Android RecyclerView滚动定位到item,并使其置顶
- RecyclerView制定位置滑动置顶,并实现头部悬停
- RecyclerView的侧滑删除置顶等实现
- [置顶] RecyclerView实现瀑布流,图片自适应高度
- RecyclerView实现带有头部的顶部悬浮置顶布局
- 置顶
- 置顶
- 置顶
- 置顶
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- Java堆栈简单实现
- +TEL:13637583712 扣扣:792075635
- exe文件打不开应该怎么办?
- python3.5 模拟UDP客户端发送数据报文,报错:TypeError: a bytes-like object is required, not 'str'
- POJ 3006(Dirichlet's Theorem on Arithmetic Progressions T) 素数判定入门 Java
- 置顶RecyclerView
- 欢迎使用CSDN-markdown编辑器
- 简单Case函数和Case搜索函数的区别
- jQuery 选择器
- POJ—3984 迷宫问题
- 基于Jenkins的持续集成CI [
- 个人复习提示||类和对象
- SQLPlus中文乱码问题解决方法——Windows10
- 关于文本框的不可编辑状态的设置