2016-01-24 23 views

risposta

18

GridLayoutManager userà una griglia, ed è possibile impostare un certo lasso, ma non diverse altezze per le cellule diverse.

quello che vuoi è un StaggeredGridLayoutManager. Ciò si limiterà a mettere gli elementi sullo schermo se si adattano, portando al risultato necessario. È inoltre possibile modificare il comportamento di riordino, se lo si desidera, utilizzando setGapStrategy.

+0

Grazie mille! – BlizzedRu

+0

"ma non altezze diverse per celle diverse." puoi comunque impostare diverse altezze di file; per esempio ogni cella ha una vista immagine con altezza impostata su wrap_content e diverse immagini sono impostate in ogni cella, quindi ogni riga avrà l'altezza delle immagini più grandi –

4

È davvero facile. È necessario aggiungere questo manager per RecycleView:

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

nel mio caso è simile a questa:

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