RecyclerView 获得正确的滚动距离

这里面使用垂直滚动来举例子,横向滚中也是同样的道理:

研究过程中借鉴了google的方法这里面先给出链接:https://stackoverflow.com/questions/29581782/how-to-get-the-scrollposition-in-the-recyclerview-layoutmanager

在开发过程中经常遇到一些记录RecyclerView准确滚动距离的需求,但是并没有一个方法了精准的获取这个距离常见的方法如下:

错误尝试:在RecyclerView.OnScrollListener的回调方法onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy)里面累加dy,但是发现如果在滚动过程中,修改了头部内容的高度就会导致计算的结果出现错误.

中间还尝试了很多热心网友提供的方法都一一验证失败;

最后阅读源码发现recyclerView.computeVerticalScrollOffset(),这个方法是根据recyclerView的总长度和childView的数量,计算出childView的平均高度,再根据当前第一个可见childView的position估算出大概的scrollY滚动距离,就使用了这个方法:scrollY = recyclerView.computeVerticalScrollOffset();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要是在使用 RecyclerView 过程中遇到的细碎问题和解决方案。 简单使用 LinearLayoutMan...
    三流之路阅读 3,967评论 0 5
  • 这篇文章分三个部分,简单跟大家讲一下 RecyclerView 的常用方法与奇葩用法;工作原理与ListView比...
    LucasAdam阅读 4,413评论 0 27
  • RecyclerView 作为一个可以滚动的空间,滚滚就是他的使命,所以我们我们在开启 RecyclerView ...
    前行的乌龟阅读 2,690评论 0 6
  • 以前拍照发给他他都很喜欢的夸我,现在却说不习惯夸,以前夸是为了泡我(听完的感觉就是不真心的,只是为了目的不择手段和...
    95fcfff80434阅读 104评论 0 0
  • **有意思的颜色**酒牢粉小时候我也挺喜欢粉色的,当几个小女生凑在一起讨论喜欢什么颜色的时候,都说喜欢粉色,因为粉...
    xiao徐徐1阅读 150评论 1 1