項(xiàng)目中經(jīng)常需要用到recyclerview的scrollToPosition方式滾動(dòng)到指定位置, 但是有時(shí)會(huì)發(fā)現(xiàn)默認(rèn)recycler會(huì)把指定的child滾動(dòng)到完全可見即會(huì)停止?jié)L動(dòng), 如果我們始終讓child的頂邊/左邊和recycler的頂邊/左邊, 如果是用的LinearManager, 可以如下設(shè)置:
一, 自定義LinearSmoothScroller
public class RecycleScrollTopScroller extends LinearSmoothScroller {
public RecycleScrollTopScroller(Context context) {
super(context);
}
/**
* 指定滾動(dòng)停留位置
* @return {@link #LinearSmoothScroller#SNAP_TO_START},{@link #LinearSmoothScroller#SNAP_TO_END},{@link #LinearSmoothScroller#SNAP_TO_ANY}
* 1.將子視圖的左側(cè)或頂部與父視圖的左側(cè)或頂部對(duì)齊;
* 2.將子視圖的右側(cè)或底部與父視圖的右側(cè)或底部對(duì)齊汇在;
* 3.具體取決于其當(dāng)前與其父代相關(guān)的位置,也是默認(rèn)設(shè)置。
**/
@Override
protected int getHorizontalSnapPreference() {
return SNAP_TO_START;
}
@Override
protected int getVerticalSnapPreference() {
return SNAP_TO_START;
}
}
二, 使用自定義的scroller滾動(dòng)到指定位置
//滑動(dòng)滾動(dòng)
final RecycleScrollTopScroller mScroller = new RecycleScrollTopScroller(mActivity);
mScroller.setTargetPosition(1);
mManager.startSmoothScroll(mScroller); //mManager是要滾動(dòng)的recycler的manager