使用GridLayoutManager以编程方式滚动RecyclerView



我已经使用过这个:

mRecyclerView.getLayoutManager().scrollToPosition(0);

以编程方式滚动具有CCD_ 2的CCD_。

我试着用RecyclerViewGridLayoutManager做同样的事情。

问题是scrollToPosition实际上没有意义,因为一个项目可能在一行的中间。不管怎样,我试过那个代码,但它什么都没做。

有没有一种方法可以用GridLayoutManager以编程方式滚动RecyclerView

实际上:

mRecyclerView.getLayoutManager().scrollToPosition(0);

工作。在我的情况下,这并不是因为我在方法中同步调用它:

public void onDestroyActionMode(ActionMode mode)

这足以将一个可运行的(没有任何延迟)发布到主线程的活套。

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if (mRecyclerView != null) {
mRecyclerView.scrollToPosition(0);
}
}
});

您可以使用GridLayoutManager 的方法"scrollVerticalyBy">

int scrollVerticallyBy (int dy, 
RecyclerView.Recycler recycler, 
RecyclerView.State state)

垂直滚动屏幕坐标中的dy像素,并返回行进的距离。默认实现不执行任何操作并返回0。

参考:按垂直滚动

最新更新