通常情况下直接用scrollToPosition(int index);但有时候这个方法根本就达不到想要的效果,例如滑动到置顶显示的需求,废话不多说,上代码:
第一种:没有滑动效果,直接到对应的位置置顶显示
rvAllCity.scrollToPosition(position);
LinearLayoutManager mLayoutManager = (LinearLayoutManager) rvAllCity.getLayoutManager(); mLayoutManager.scrollToPositionWithOffset(position, 0);
第二种:有滑到效果,然后置顶显示
TopSmoothScroller是直接继承的LinearSmoothScroller实现getHorizontalSnapPreference() getVerticalSnapPreference()这个两个方法
public class TopSmoothScroller extends LinearSmoothScroller {
public TopSmoothScroller(Context context) {
super(context);
}
@Override
protected int getHorizontalSnapPreference() {
return SNAP_TO_START;// 具体见源码注释
}
@Override
protected int getVerticalSnapPreference() {
return SNAP_TO_START;// 具体见源码注释
}
}
smoothScroller = new TopSmoothScroller(mContext);
smoothScroller.setTargetPosition(position);
linearLayoutManager.startSmoothScroll(smoothScroller);