Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different (dynamic) items height in GridLayoutManager

Tags:

I have a RecyclerView and GridLayoutManager with 2 columns. How can I force LayoutManager to be according with template on the first screenshot? Now I have result as on the 2th screenshot.

Need result:

Current result:

like image 634
BlizzedRu Avatar asked Jan 24 '16 17:01

BlizzedRu


2 Answers

GridLayoutManager will use a grid, and you can set some span, but not different heights for different cells.

What you want is a StaggeredGridLayoutManager. This will just put the items on the screen if they fit, leading to your needed result. You can also change the reordering behavior, if you want to, by using setGapStrategy.

like image 177
David Medenjak Avatar answered Oct 01 '22 01:10

David Medenjak


It's really easy. You have to add this manager to RecycleView:

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1)); 

in my case it's look like this:

Context context = view.getContext(); RecyclerView recyclerView = (RecyclerView) view;  if (mColumnCount <= 1) {     recyclerView.setLayoutManager(new LinearLayoutManager(context)); } else {     recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1)); } recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.ITEMS, mListener)); 
like image 44
Eliasz Kubala Avatar answered Oct 01 '22 01:10

Eliasz Kubala