RecyclerView 到达顶部的另一种方式
来源:互联网 发布:淘宝千色药妆是正品么 编辑:程序博客网 时间:2024/05/16 14:36
RecyclerView 到达顶部的条件有很多种,除了Scroll外,很多都要和LayoutManager的具体类型相关。
特别的,但第一个item的height为0的时候,canScrollVertically的判断就会出错。
这里提出一种和具体类型无关的,并能避免height为0时出现错误的方法:
private static Rect InsertRect = new Rect(); private static boolean canScrollVertically(RecyclerView view, int direction) { if (direction < 1) { if (view.getChildCount() > 0) { // 获取第一个View View child = view.getChildAt(0); if (child != null && view.getChildAdapterPosition(child) == 0) { // 这个view是否是第0个item RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); RecyclerView.LayoutManager layoutManager = view.getLayoutManager(); if (layoutManager != null && layoutParams != null) { // 获得ItemDecorations中的偏移 layoutManager.calculateItemDecorationsForChild(child, InsertRect); // 第一个View的top修正偏移和margin后的实际位置 int top = child.getTop() - InsertRect.top - layoutParams.topMargin; return top < 0; // >= 0 到顶 } } } } return view.canScrollVertically(direction); }
原理就是当第一个View是第0项,并且view的top在偏移和margin修正后 >= 0就到达顶端了。
阅读全文
0 0
- RecyclerView 到达顶部的另一种方式
- RecyclerView的一些操作(记录一下)判断是否到达顶部和尾部
- UITableView 到达顶部或底部的判断
- 判断SwipeRefreshLayout的childView是否到达顶部
- 一键到达顶部的代码
- 另一种爱的方式
- 打电话的另一种方式
- 另一种方式实现京东顶部宽度全屏
- 判断ListView已到达顶部或底部的方法
- listview添加头部后判断是否到达顶部的方法
- RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式
- 调用方法的另一种方式
- 调用方法的另一种方式
- Decorator的另一种实现方式
- Delegate的另一种创建方式
- cooklie的另一种设置方式
- 代理的另一种实现方式
- Intent的另一种启动方式
- 电脑中的睡眠、休眠和关机有什么区别?
- vue-resource.js
- SpringMVC常用方法深入学习---@Controller
- quartz的使用(一)
- 弹出框显示时,禁止背景层滚动
- RecyclerView 到达顶部的另一种方式
- Python进程池简单示例
- conda 常见错误
- 索引在查询中如何使用(例子一)
- java中ArrayList、LinkedList和Vector的区别
- Docker下搭建DNS服务器
- Algorithm学习笔记 --- C语言实现二分查找
- 折半插入排序
- RainMeter,一款创意桌面软件