除了手动滑动Listview之外,用来滑动listview的方法有这么几个:

setScrollY(int Y)

setPostion(int position)

setPostionFromTop(int position, int offset)

scrollTo(int x, int y)

scrollBy(int x, int y)

scrollListBy(int y)

smoothScrollByOffset(int offset)

smoothScrollBy(int distance, int duration)

smoothScrollToPosition(int position)

smoothScrollToPosition(int position, int boundPositon)

smoothScrollToPositionFromTop(int position, int offset)

smoothScrollToPositionFromTop(int position, int offset, int duration)

smoothScrollByOffset(int offset)

首先,y自然是指最上边的纵坐标,而Postion是指最上边显示的item标号。

set开头的是移到目标位置。

scroll开头的也是直接移到目标位置。

smoonth开头的有动画效果,滑动需要花费一定的时间。

我所遇到的坑就是采用smooth后,还有一个修改界面的处理,两个互相冲突了,导致出现了奇怪的效果。

一开始我想着在smooth结束后来个回调,在回调中再来处理修改界面,但不知道如何来创建回调。

之后通过为smooth设定好固定周期,并在这个周期后通过listview.post()来延时执行修改界面处理,从而消除了冲突。

下面是各方法的详细介绍:

setScrollY(int Y),直接修改scrollY属性,不会通知adapter更新数据,因而改变位置后可能会出现空白,且再点击一下又会返回到之前的位置,一般没什么用。

setPostion(int position),移动到最顶端编号为position的item,简单粗暴,但适用场景有限。

setPostionFromTop(int position, int offset),在上面方法的基础上还可以再移动offset像素的偏移量,offset为正时为向上移动,能很好的应付不需要滑动动画时的需求。

scrollListBy(int y),与setScrollY相比,此方法会通知adapter更新数据,但最低api需求为19。

scrollTo(int x, int y),一目了然,移动到坐标为(x,y)的位置,与set方法相比,它还可以进行二维移动。

scrollBy(int x, int y),在当前的基础上移动(x,y)的像素距离。

smoothScrollByOffset(int offset) ,平缓的滑动到据当前编号差为offset的item,注意,这里的offset指的是item编号差而不是像素差,坑爹的样子。

smoothScrollBy(int distance, int duration),这里的distance指的是像素了,平缓在duration毫秒内滑动distance的像素差。

smoothScrollToPosition(int position),平缓滑动到编号为position的item。

smoothScrollToPosition(int position, int boundPositon),如果当前编号大于boundPosition才进行滑动,如果boundPosition为负时取绝对值。

smoothScrollToPositionFromTop(int position, int offset),类似setPostionFromTop,滑动到距编号为position的item像素差为offset的位置。

smoothScrollToPositionFromTop(int position, int offset, int duration),在上面方法的基础上限制了滑动时间为duration。

我最终采用的就是smoothScrollToPositionFromTop(int position, int offset, int duration),如果无需滑动动画,推荐用setPostionFromTop(int position, int offset)。

ListView滚动的方法相关推荐

  1. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向...

    很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...

  2. android listview 向上自动滚动效果,Android通过代码控制ListView上下滚动的方法

    本文将介绍一种通过代码控制ListView上下滚动的方法. 先上图: 按下按钮会触发ListView滚动或停止. 实现该功能并不难,下面给出主要代码MainActivity.java package ...

  3. 监听ListView滚动到最底部

    监听ListView滚动到最底部 监听ListView的滚动可以用两个东西: ListView.onScrollStateChanged (本文讲解这个listener的使用) 在OnGestureL ...

  4. listview滚动到底部

    方法一: // msgListView是ListView控件 // adapter是ListView绑定的Adapter,如果不方便直接使用,也可以通过ListView的getAdapter()方法获 ...

  5. android listview 移动到顶部,android listview滚动到顶部

    1.为了实现类似IOS点击状态栏,列表回滚到顶部的功能(要平滑滚动效果),android上点击一个按钮或是图片什么的也可以让listview一次性滚动到顶部(滑动太多页时,一次可能滚不到顶部,使用ha ...

  6. Flutter ListView滚动到指定条目

    找遍全网没有看到listview滚动到指定条目的方法,基本都是通过条目的高度计算达到效果.这样比较麻烦.通过研究发现一种简单的方法,但是不能使用listview组件,需要使用SingleChildSc ...

  7. 一步一步做ListView滚动固定头部并且头部会变化哦

    手机QQ好友列表中,组名在滚动的时候会固定在头部,等到这个组全部滚完后,组名也会随着向上滚动.在ListView也可以实现这么的效果. 如上所示:listview中分类显示,每一个类别有一个catal ...

  8. 【eoe 特刊】Windows 8 第一期 -- C#基本语法---sqlite数据库的使用---ListView 滚动加载 ---等

    [eoe 特刊]Windows 8 第一期 本文档由 eoeWindowsPhone 开发者社区组织策划,整理及发布,版权所有,转载请保留 http://wp.eoe.cn/ 做最棒的 Windows ...

  9. cocos2d-js中listView的jumpToBottom()方法无效的解决方法

    cocos2d-js中listView的jumpToBottom()方法无效的解决方法 参考文章: (1)cocos2d-js中listView的jumpToBottom()方法无效的解决方法 (2) ...

最新文章

  1. 用nice等命令设定的进程优先级有什么确切的含义?
  2. UML-类图-需要写关联名称吗?
  3. DQN笔记:MC TD
  4. emacs python plugin_使用 python 扩展 emacs
  5. UVa --10566
  6. 数据类型转换_注意事项
  7. python 绘制分形树
  8. 错误提示:'……' is not assignable to Android.app.Activity Manifest XML
  9. Jmeter 压测基础笔记
  10. 特斯拉员工薪酬曝光 最低54万元!
  11. python找出最小数_找出不除N的最小数
  12. 从网络上下载文件到本地
  13. SQL像数组一样处理字符串、分割字符串(标量值函数[用户自定义函数])
  14. 弹性计算安全组最佳实践及新特性介绍
  15. 台达plc控制伺服电机编程实例_三菱Q系列PLC控制伺服电机编程实例
  16. 电脑重启桌面 计算机图标消失,电脑重启后计算机图标不见了怎么办
  17. UE4学习笔记——粒子发射器
  18. Switch组件的使用
  19. 项目难于管理的根本原因在于项目的”VUCA”特性
  20. 2020年美容师(中级)证模拟考试题库及美容师(中级)理论考试试题

热门文章

  1. 第三章 UT单元测试——CPU与内存使用率限制
  2. package,source folder,folder问题
  3. 一个破解共存版微信个破解共存版微信
  4. Python编程竞赛训练 - 微信公众号排行榜分析
  5. ATM异地跨行取钱收费大比拼
  6. Linux kernel内存管理之OOM相关参数
  7. 【node】升级 Node 版本教程
  8. python外星人入侵小游戏
  9. layui框架实战案例(6):上传图片和视频自动调用IOS或安卓系统的摄像头功能
  10. Spark:spark submit参数及调优 perfect