我正在寻找一种方法来滚动RecyclerView,以显示选中的项目在顶部。
在一个ListView中,我能够通过使用scrollTo(x,y)来做到这一点,并获得需要居中的元素的顶部。
喜欢的东西:
@Override
public void onItemClick(View v, int pos){
mylistView.scrollTo(0, v.getTop());
}
问题是RecyclerView在使用它的scrollTo方法时返回一个错误说
RecyclerView不支持滚动到绝对位置
我如何滚动一个RecyclerView把选定的项目放在视图的顶部?
如果你想自动滚动而不显示滚动运动,那么你需要写以下代码:
mRecyclerView.getLayoutManager().scrollToPosition(position);
如果你想显示滚动运动,那么你需要添加以下代码。
步骤1:你需要声明SmoothScroller。
RecyclerView.SmoothScroller smoothScroller = new
LinearSmoothScroller(this.getApplicationContext()) {
@Override
protected int getVerticalSnapPreference() {
return LinearSmoothScroller.SNAP_TO_START;
}
};
=>步骤2:你需要添加这段代码任何事件,你想要执行滚动到特定的位置。
首先你需要设置目标位置为平滑滚动。
smoothScroller.setTargetPosition(position);
然后你需要将SmoothScroller设置为LayoutManager。
mRecyclerView.getLayoutManager().startSmoothScroll(smoothScroller);