RecyclerView是Android开发中经常遇到的一个控件,在使用RecyclerView的时候,直接滑动到某个position的位置的需求也经常碰到。
遇到这个需求了,我们就会去找RecyclerView是否有类似于ListView中的smoothScrollToPosition的方法。在代码中一敲,果然有,兴奋的运行调试。运行之后就开始沮丧了,怎么效果和期待的不一样的,甚至有时候调用smoothScrollToPosition方法根本没有任何动静。
这可咋整?只能到网上找找资料了,经过一番搜索,发现原来RecyclerView的smoothScrollToPosition方法是有坑的。
通过LayoutManager的srcollToPositionWithOffset方法进行定位
当然,直接定位的话,如下方式可以实现,而且定位相当精准。1
2
3// 通过LayoutManager的srcollToPositionWithOffset方法进行定位
mLayoutManager.scrollToPositionWithOffset(position, 0);
但是,它比较粗暴,直接定位过去了,而不是滑动过去。当然,如果你的产品经理能够接受这个效果那也就不需要这么折腾了。
然而,这么粗暴的体验,几乎没有哪个产品能够接受的。所以不得不继续寻找体验更好的方式。