RecycleView4种定位滚动
来源:互联网 发布:日常悠哉大王知乎 编辑:程序博客网 时间:2024/06/07 14:46
概述
相信大家在项目中使用RecyclerView时,经常会遇到这样的需求:
将RecyclerView滑动到指定位置,或者检索RecyclerView的某一项(各个项的高度不确定),然后定位滚动这到一项,将它显示。
下面就讲解4种RecyclerView定位滚动的方式及具体效果演示。
scrollBy
使用:recyclerView.scrollBy(x, y)
scrollBy(x, y)
这个方法是自己去控制移动的距离,单位是像素,所以在使用scrollBy(x, y)
需要自己去计算移动的高度或宽度。
scrollToPosition
使用: recyclerView.scrollToPosition(position)
scrollToPosition(position)
这个方法的作用是定位到指定项,就是把你想显示的项显示出来,但是在屏幕的什么位置是不管的,只要那一项现在看得到了,那它就罢工了!
smoothScrollToPosition
使用: recyclerView.smoothScrollToPosition(position)
smoothScrollToPosition(position)
和scrollToPosition(position)
效果基本相似,也是把你想显示的项显示出来,只要那一项现在看得到了,那它就罢工了,不同的是smoothScrollToPosition是平滑到你想显示的项,而scrollToPosition是直接定位显示!
scrollToPositionWithOffset
使用: ((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(position,0);
主角总是最后才登场,这种方式是定位到指定项如果该项可以置顶就将其置顶显示。比如:微信联系人的字母索引定位就是采用这种方式实现。
若在滚动的时候调用可能不准确,可以在调用此方法前,调用
mRecyclerView.stopScroll();
资源下载
apk下载
Github
概述
RecyclerView在安卓开发中非常实用,而且简单易用,但是在实际开发中一直有一个问题困扰着我,就是定位问题,实际的项目中总是会遇到这样的需求:检索RecyclerView的某一项(各个项的高度不确定),然后定位这一项,将它显示在顶部。用RecyclerView的默认移动的方法并不能实现这一点(个人感觉官方可能出于性能考虑才不实现这一点)。这篇博客就讲解下我个人是如何实现这个需求的。
Demo演示
敲代码前的思考
RecyclerView提供的用于控制移动的方法有2个
- scrollToPosition(int)
这个方法的作用是显示指定项,就是把你想置顶的项显示出来,但是在屏幕的什么位置是不管的,只要那一项现在看得到了,那它就罢工了!
- scrollBy(int x,int y)
这个方法是自己去控制移动的距离,单位应该是像素。
使用scrollToPosition时,移动到前面的项时,它默认会将要显示的项置顶,但是移动到后面的项时,位置就说不好了(看它心情!)一般会显示在最后一个。用过的应该都有所了解。
使用scrollBy时就需要自己计算高度或者宽度。在动态的布局中且各项样式高度可能都不一样的情况下,自己计算高度是很有难度的。
上面说了这么多废话,结论就是这2个方法都不能很好解决问题,但是,当他们2个结合使用的时候,我们的问题就变的好解决很多了!
思路是:先用scrollToPosition,将要置顶的项先移动显示出来,然后计算这一项离顶部的距离,用scrollBy完成最后的100米!
关键代码
先传入要置顶第几项,然后区分情况处理
adapter.getItemCount(),获取总item个数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
RecyclerView滚动监听
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Demo下载
[CSDN]
[GitHub]
转载的链接:http://www.jianshu.com/p/3acc395ae933
http://blog.csdn.net/tyzlmjj/article/details/49227601
- RecycleView4种定位滚动
- RecycleView4种定位
- 滚动条定位控制
- 滚动条定位控制
- javascript 滚动定位
- flex定位滚动条
- javascript 层定位 滚动
- javascript滚动条定位
- 滚动条定位
- Android RecyclerView滚动定位
- Android RecyclerView滚动定位
- Android RecyclerView滚动定位
- 解决滚动条定位
- Android RecyclerView滚动定位
- 滚动条锚点自动定位
- 网页滚动条定位(vs2005)
- 怎么定位滚动条位置
- 定位滚动条的问题
- 【HDU 1070】Milk(贪心)
- C++ Primer Notes(13)
- linux下 Mysql的安装
- 【leetcode】2. Add Two Numbers(Python & C++)
- [实践]利用J1939传输8字节以上的数据(TP长帧传输)
- RecycleView4种定位滚动
- XML转义特殊字符
- React Native 实现热部署、差异化增量热更新
- Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法
- oracle自带表练习(二)
- CSRF攻击的对应方法
- 从哪6个方面能判断你具有成为管理者的潜力?
- 京东云主机使用-搭建简单网页(macOS)
- Guava包中的ListenableFuture详情解析