这里面使用垂直滚动来举例子,横向滚中也是同样的道理:
研究过程中借鉴了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();
网友评论