我已经用过这个:
mRecyclerView.getLayoutManager().scrollToPosition(0);
以编程方式使用RecyclerView
滚动LinearLayoutManager
。
我试图对RecyclerView
GridLayoutManager
进行同样的操作。
问题是scrollToPosition没有意义,因为一个项目可以在一行中间。 无论如何,我尝试了这个代码,它没有做任何事情。
有没有办法以编程方式滚动RecyclerView
与GridLayoutManager
?
答案 0 :(得分:2)
实际上:
mRecyclerView.getLayoutManager().scrollToPosition(0);
的工作原理。 在我的情况下,这不是因为我在方法中同步调用它:
public void onDestroyActionMode(ActionMode mode)
将runnable(没有任何延迟)发布到主线程的looper就足够了。
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if (mRecyclerView != null) {
mRecyclerView.scrollToPosition(0);
}
}
});
答案 1 :(得分:0)
你可以使用方法" scrollVerticallyBy" GridLayoutManager
int scrollVerticallyBy (int dy,
RecyclerView.Recycler recycler,
RecyclerView.State state)
在屏幕坐标中垂直滚动dy像素并返回行进距离。默认实现不执行任何操作并返回0.