RecyclerView滚动定位到某一个具体的item或者位置的方法还是很多的。如:
scrollToPosition()
smoothScrollToPosition()
scrollToPositionWithOffset(int, int)
但有时候,也会遇到一些奇葩的问题:
1.目的:RecyclerView滚动定位到某一个item,实际上没有滚动
原因:要滚动到的位置,已经在屏幕里面了,这时候是不滚动的,只有要滚到的位置没有在屏幕上,才会滚动。
解决:计算item距离顶部的距离,使用scrollBy()。
代码:
class RecyclerViewListener extends RecyclerView.OnScrollListener{
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            //在这里进行第二次滚动(最后的100米!)
            if (move ){
                move = false;
                //获取要置顶的项在当前屏幕的位置,mIndex是记录的要置顶项在RecyclerView中的位置
                int n = mIndex - mLinearLayoutManager.findFirstVisibleItemPosition();
                if ( 0 <= n && n < mRecyclerView.getChildCount()){
                    //获取要置顶的项顶部离RecyclerView顶部的距离
                    int top = mRecyclerView.getChildAt(n).getTop();
                    //最后的移动
                    mRecyclerView.scrollBy(0, top);
                }
            }
        }
    }