以编程方式使用GridLayoutManager滚动RecyclerView

时间:2016-06-09 09:59:56

标签: android gridlayoutmanager

我已经用过这个:

mRecyclerView.getLayoutManager().scrollToPosition(0);

以编程方式使用RecyclerView滚动LinearLayoutManager

我试图对RecyclerView GridLayoutManager进行同样的操作。

问题是scrollToPosition没有意义,因为一个项目可以在一行中间。 无论如何,我尝试了这个代码,它没有做任何事情。

有没有办法以编程方式滚动RecyclerViewGridLayoutManager

2 个答案:

答案 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.

参考:scrollVerticallyBy