2016-01-24 12 views

Antwort

18

GridLayoutManager wird ein Gitter verwenden, und Sie können einige Spanne festgelegt, aber nicht unterschiedliche Höhen für verschiedene Zellen.

Was Sie wollen, ist ein StaggeredGridLayoutManager. Dadurch werden die Objekte einfach auf den Bildschirm gelegt, wenn sie passen, was zu dem benötigten Ergebnis führt. Sie können das Neuordnungsverhalten auch ändern, indem Sie setGapStrategy verwenden.

+0

Vielen Dank! – BlizzedRu

+0

"aber nicht unterschiedliche Höhen für verschiedene Zellen." Sie können jedoch unterschiedliche Zeilenhöhen festlegen. Zum Beispiel hat jede Zelle eine Bildansicht mit einer Höhe, die auf wrap_content gesetzt ist und verschiedene Bilder werden in jeder Zelle gesetzt, dann nimmt jede Zeile die Höhe der größten Bilder an –

4

Es ist wirklich einfach. Sie haben diese Manager RecycleView hinzuzufügen:

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

in meinem Fall ist es so aussehen ist:

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