如標(biāo)題,這里只針對LinearLayoutManager的情況派阱,滑動并頂置
新建一個TopSmoothScroller類
public class TopSmoothScroller extends LinearSmoothScroller {
public TopSmoothScroller(Context context) {
super(context);
}
@Override
protected int getHorizontalSnapPreference() {
//設(shè)置水平滑動并頂置
return SNAP_TO_START;
}
@Override
protected int getVerticalSnapPreference() {
//設(shè)置垂直滑動并頂置
return SNAP_TO_START;
}
@Override
protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
//返回值切诀,設(shè)置滑動速度
return super.calculateSpeedPerPixel(displayMetrics);
}
}
在需要滑動的地方設(shè)置
fun move(position: Int) {
var smoothScroller = TopSmoothScroller(this)
smoothScroller.targetPosition = position
recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
}
這樣就能實現(xiàn)滑動到某個position并頂置
如果需要實現(xiàn)跳轉(zhuǎn)并頂置揩环,即跳轉(zhuǎn)到recyclerview列表是,第一個直接顯示某個postion幅虑,只需要下面這樣
var layoutManager = recyclerview.layoutManager as LinearLayoutManager
layoutManager.scrollToPositionWithOffset(moveIndex, LinearSmoothScroller.SNAP_TO_START)