前言
最近开发中遇到了一个需求,需要RecyclerView滚动到指定位置后置顶显示,当时遇到这个问题的时候,心里第一反应是直接使用RecyclerView的smoothScrollToPosition()方法,实现对应位置的平滑滚动。但是在实际使用中发现并没有到底自己想要的效果。本想着偷懒直接从网上Copy下,但是发现效果并不是很好。于是就自己去研究源码。
该系列文章分为两篇文章。
- 如果你想解决通过smoothScrollToPosition滚动到顶部,或者滚动加速,请观看本篇文章,
- 如果你想了解其内部实现,请看RecyclerView.smoothScrollToPosition了解一下
注意!!!注意!!!注意!!!
这是使用的LinearLayoutManager且是竖直方向上的,横向的思路是一样的,只是修改的方法不一样,大家一定要注意前提条件。
如何使用smoothScrollToPosition滚动到顶部?
如果你看了我的另一篇文章RecyclerView.smoothScrollToPosition了解一下,大家应该会清楚,其实在你设定目标位置后,当找到目标视图后,最后让RecyclerView进行滚动的方法是其对应LinearLayoutManager中的LinearSmoothScroller的calculateDtToFit()方法。
public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd