Question
最近在写 SideBar 的时候遇到一个问题,当执行 Recyclerview 的 smoothScrollToPosition(position)
的时候,Recyclerview 看上去并没有滚动到指定位置。
Analysis
当然,这并不是方法的bug,而是 smoothScrollToPosition(position)
的执行效果有三种情况,需要区分。
目标position在第一个可见项之前 。
这种情况调用smoothScrollToPosition
能够平滑的滚动到指定位置,并且置顶。目标position在第一个可见项之后,最后一个可见项之前。
这种情况下,调用smoothScrollToPosition
不会有任何效果···目标position在最后一个可见项之后。
这种情况调用smoothScrollToPosition
会把目标项滑动到屏幕最下方···
Solution
鉴于这三种情况,我想大多数情况下都无法满足我们的滑动要求。为了实现 Recyclerview 把指定 item 滑动到屏幕顶端的需求,我们需要对上面三种情况分别处理。
/** 目标项是否在最后一个可见项之后*/
private boolean