web-dev-qa-db-ja.com

GridLayoutManagerのさまざまな(動的)アイテムの高さ

2列のRecyclerViewとGridLayoutManagerがあります。 LayoutManagerを最初のスクリーンショットのテンプレートに準拠させるにはどうすればよいですか?これで、2番目のスクリーンショットのような結果が得られました。

結果が必要:

現在の結果:

12
BlizzedRu

GridLayoutManagerはグリッドを使用し、スパンを設定できますが、セルごとに高さを変えることはできません。

必要なのは StaggeredGridLayoutManager です。これにより、アイテムが収まる場合は画面に表示されるだけで、必要な結果が得られます。必要に応じて、 setGapStrategy を使用して、並べ替えの動作を変更することもできます。

22
David Medenjak

本当に簡単です。このマネージャーを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));
4
EliaszKubala