1、mLayoutManager
private void moveToPosition(int position) {
if (position >= 0) {
mLayoutManager.scrollToPositionWithOffset(3, 0);
}
}
2、LinearSmoothScroller
mTopSmoothScroller = new TopSmoothScroller(getActivity());
private void smoothScroll(int position) {
mRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
if (!isDetached() && position >= 0 && getActivity() != null && mTopSmoothScroller != null) {
mTopSmoothScroller.setTargetPosition(position);
mLayoutManager.startSmoothScroll(mTopSmoothScroller);
}
}
}, 0);
}
TopSmoothScroller:
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;//具体见源码注释
}
}
3、RecyclerView的
scrollBy(int x, int y)
scrollToPosition(int position)