我正在寻找一种滚动 RecyclerView
以在顶部显示所选项目的方法 .
在一个 ListView
中,我能够通过使用 scrollTo(x,y)
并获得需要居中的元素的顶部来做到这一点 .
就像是:
@Override
public void onItemClick(View v, int pos){
mylistView.scrollTo(0, v.getTop());
}
问题是 RecyclerView
在使用它的 scrollTo
方法时会返回错误
RecyclerView不支持滚动到绝对位置
如何滚动 RecyclerView
将所选项目放在视图顶部?
12 回答
与速度调节器相同
你只需要拨打
recyclerview.scrollToPosition(position)
. 没关系!如果要在适配器中调用它,只需让适配器具有recyclelerview实例或包含recyclerview的活动或片段,而不是在其中实现方法
getRecyclerview()
.我希望它可以帮到你 .
在特定位置滚动
这对我很有帮助 . 通过单击侦听器,您可以获得适配器中的位置
如果您使用的是LinearLayoutManager或StaggeredGridLayoutManager,它们每个都有一个scrollToPositionWithOffset方法,它从RecyclerView的开头获取项目开头的位置和偏移量,这似乎可以完成您的需要(设置偏移量) 0应该与顶部对齐) .
例如:
在我的情况下,我的
RecyclerView
有这样的填充顶部然后,为了将项目滚动到顶部,我需要
尝试一下对我有用的东西!
创建一个变量
private static int displayedposition = 0;
现在,您可以在Activity中找到RecyclerView的位置 .
将此语句放在您希望它将前一个站点显示在视图中的位置 .
那就是它,它对我来说很好\ o /
在点击按钮后刷新RecyclerView后我做了什么来恢复滚动位置:
在创建linearLayoutManager对象之前从顶部获取第一个可见项的偏移量,并在实例化之后调用LinearLayoutManager对象的scrollToPositionWithOffset .
如果您正在寻找垂直LinearLayout Manager,您可以使用自定义
LinearSmoothScroller
实现平滑滚动:在循环视图中使用layoutmanager的实例,然后调用
recyclerView.smoothScrollToPosition(pos);
将平滑滚动到选定位置到回收器视图的顶部//滚动项目pos
只需简单地调用此方法:
代替:
我使用下面的代码将项目(thisView)平滑滚动到顶部 .
它也适用于GridLayoutManager,具有不同高度的视图:
似乎工作得很好,可以快速解决问题 .