2016-01-24 22 views

Odpowiedz

18

GridLayoutManager użyje sieci, można ustawić kilka rozpiętość, ale nie różne wysokości dla różnych komórek.

Co chcesz to StaggeredGridLayoutManager. Spowoduje to po prostu umieszczenie elementów na ekranie, jeśli będą pasowały, prowadząc do pożądanego rezultatu. Możesz także zmienić zachowanie ponownego zamawiania, jeśli chcesz, używając setGapStrategy.

+0

Dziękuję bardzo! – BlizzedRu

+0

"ale nie różne wysokości dla różnych komórek." możesz ustawić inną wysokość rzędów; na przykład każda komórka ma widok obrazu z wysokością ustawioną na wrap_content, a różne obrazy są ustawiane w każdej komórce, a następnie każdy wiersz będzie zajmował wysokość największych obrazów –

4

To naprawdę łatwe. Trzeba dodać do tego menedżera RecycleView:

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

w moim przypadku to wyglądać tak:

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)); 
Powiązane problemy