RecyclerView滚动到指定位置的对齐方式
2021-09-02 本文已影响0人
桔子和猫
项目中经常需要用到recyclerview的scrollToPosition方式滚动到指定位置, 但是有时会发现默认recycler会把指定的child滚动到完全可见即会停止滚动, 如果我们始终让child的顶边/左边和recycler的顶边/左边, 如果是用的LinearManager, 可以如下设置:
一, 自定义LinearSmoothScroller
public class RecycleScrollTopScroller extends LinearSmoothScroller {
public RecycleScrollTopScroller(Context context) {
super(context);
}
/**
* 指定滚动停留位置
* @return {@link #LinearSmoothScroller#SNAP_TO_START},{@link #LinearSmoothScroller#SNAP_TO_END},{@link #LinearSmoothScroller#SNAP_TO_ANY}
* 1.将子视图的左侧或顶部与父视图的左侧或顶部对齐;
* 2.将子视图的右侧或底部与父视图的右侧或底部对齐;
* 3.具体取决于其当前与其父代相关的位置,也是默认设置。
**/
@Override
protected int getHorizontalSnapPreference() {
return SNAP_TO_START;
}
@Override
protected int getVerticalSnapPreference() {
return SNAP_TO_START;
}
}
二, 使用自定义的scroller滚动到指定位置
//滑动滚动
final RecycleScrollTopScroller mScroller = new RecycleScrollTopScroller(mActivity);
mScroller.setTargetPosition(1);
mManager.startSmoothScroll(mScroller); //mManager是要滚动的recycler的manager