2016-01-24 78 views

回答

18

GridLayoutManager將使用一個網格,可以爲不同的小區設置一些跨度,而不是不同的高度。您要的是StaggeredGridLayoutManager。如果它們合適,這將只將這些項目放在屏幕上,導致您需要的結果。如果需要,還可以使用setGapStrategy更改重新排序行爲。

+0

非常感謝您! – BlizzedRu

+0

「但不同高度的細胞不同。」儘管如此,你可以設置不同的行高度。例如,每個單元格都有圖像視圖,高度設置爲wrap_content,並在每個單元格中設置不同的圖像,然後每行將採用最大圖像的高度 –

4

這真的很容易。你有這個經理加入到RecycleView:

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

在我的情況下,它看起來像這樣:

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