2016-01-24 47 views
8

私は2列のRecyclerViewとGridLayoutManagerを持っています。 レイアウトマネージャを最初のスクリーンショットのテンプレートに従って強制するにはどうすればよいですか?今、私は2番目のスクリーンショットのような結果を得ました。GridLayoutManagerの異なる(動的な)アイテムの高さ

は結果が必要:

現在の結果:

答えて

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)); 
関連する問題