2016-06-09 5 views
1

Я уже использовал это:Программным прокручивать RecyclerView с GridLayoutManager

mRecyclerView.getLayoutManager().scrollToPosition(0); 

программно прокручивать в RecyclerView с LinearLayoutManager.

Я пытался сделать то же самое с RecyclerView с GridLayoutManager.

Проблема в том, что scrollToPosition не имеет смысла, поскольку элемент может находиться в середине строки. В любом случае я пробовал этот код, и он ничего не делал.

Есть ли способ программно прокручивать RecyclerView с помощью GridLayoutManager?

ответ

1

На самом деле:

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); 
      } 
     } 
    }); 
0

Вы можете использовать метод «scrollVerticallyBy» из GridLayoutManager

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

Прокрутка по вертикали ду пикселей в координатах экрана и вернуть пройденное расстояние. Реализация по умолчанию ничего не делает и возвращает 0.

Ref: scrollVerticallyBy

+1

Право, но это означает, что мне придется выполнять прокрутку самостоятельно. Я искал некоторую поддержку от реализации GridLayoutManager – kingston

+0

Да, возможно, есть и другие решения, но, согласно ссылке, это он. –

Смежные вопросы