使用 GridLayoutManager 以编程方式滚动 RecyclerView
Programmatically scroll a RecyclerView with GridLayoutManager
我已经用过这个了:
mRecyclerView.getLayoutManager().scrollToPosition(0);
以编程方式滚动 RecyclerView
和 LinearLayoutManager
。
我试图用 RecyclerView
和 GridLayoutManager
做同样的事情。
问题是 scrollToPosition 没有真正意义,因为一个项目可以在一行的中间。
不管怎样,我试过那个代码,但它什么也没做。
有没有办法以编程方式滚动 RecyclerView
和 GridLayoutManager
?
您可以使用 GridLayoutManager
的方法 "scrollVerticallyBy"
int scrollVerticallyBy (int dy,
RecyclerView.Recycler recycler,
RecyclerView.State state)
在屏幕坐标中垂直滚动 dy 个像素,return 移动的距离。默认实现什么也不做,returns 0。
实际上:
mRecyclerView.getLayoutManager().scrollToPosition(0);
有效。
就我而言,这不是因为我在方法中同步调用它:
public void onDestroyActionMode(ActionMode mode)
足以 post 一个可运行的(没有任何延迟)到主线程的循环程序。
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if (mRecyclerView != null) {
mRecyclerView.scrollToPosition(0);
}
}
});
我已经用过这个了:
mRecyclerView.getLayoutManager().scrollToPosition(0);
以编程方式滚动 RecyclerView
和 LinearLayoutManager
。
我试图用 RecyclerView
和 GridLayoutManager
做同样的事情。
问题是 scrollToPosition 没有真正意义,因为一个项目可以在一行的中间。 不管怎样,我试过那个代码,但它什么也没做。
有没有办法以编程方式滚动 RecyclerView
和 GridLayoutManager
?
您可以使用 GridLayoutManager
的方法 "scrollVerticallyBy"int scrollVerticallyBy (int dy,
RecyclerView.Recycler recycler,
RecyclerView.State state)
在屏幕坐标中垂直滚动 dy 个像素,return 移动的距离。默认实现什么也不做,returns 0。
实际上:
mRecyclerView.getLayoutManager().scrollToPosition(0);
有效。 就我而言,这不是因为我在方法中同步调用它:
public void onDestroyActionMode(ActionMode mode)
足以 post 一个可运行的(没有任何延迟)到主线程的循环程序。
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if (mRecyclerView != null) {
mRecyclerView.scrollToPosition(0);
}
}
});