2列のRecyclerViewとGridLayoutManagerがあります。 LayoutManagerを最初のスクリーンショットのテンプレートに準拠させるにはどうすればよいですか?これで、2番目のスクリーンショットのような結果が得られました。
結果が必要:
現在の結果:
GridLayoutManager
はグリッドを使用し、スパンを設定できますが、セルごとに高さを変えることはできません。
必要なのは StaggeredGridLayoutManager
です。これにより、アイテムが収まる場合は画面に表示されるだけで、必要な結果が得られます。必要に応じて、 setGapStrategy
を使用して、並べ替えの動作を変更することもできます。
本当に簡単です。このマネージャーを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));