RecyclerViewの使用中に、GridLayoutManagerの行に可変数の列を表示したかったのです。表示される列の数は、列のTextViewのサイズによって異なります。
テキストが動的に挿入されているため、列幅がわかりません。
誰か助けてもらえますか? StaggeredGridLayoutManagerは、高さをカスタマイズしますが、固定数の列を使用するため、私の目的を解決していません。
setSpanSizeLookup
の- GridLayoutManager
メソッドを見てください。 RecyclerView
の特定の位置のスパンサイズを指定できます。したがって、可変列番号の要件に合わせて使用できる可能性があります。
編集:
GridLayoutManager manager = new GridLayoutManager(context, 2); // MAX NUMBER OF SPACES
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (position == 1 || position == 6) {
return 2; // ITEMS AT POSITION 1 AND 6 OCCUPY 2 SPACES
} else {
return 1; // OTHER ITEMS OCCUPY ONLY A SINGLE SPACE
}
}
});
この種のレイアウトを使用する場合、manager
のRecyclerView
は次のようになります。
+---+---+
| 0 | |
+---+---+
| 1 |
+---+---+
| 2 | 3 |
+---+---+
| 4 | 5 |
+---+---+
| 6 |
+---+---+
(数字の付いたボックスのみがRecyclerView
のアイテムを表し、他のボックスは単なる空のスペースです)
次のようなバリエーションを作成する場合:4列、5列、6列...この数値(60)の間でMMC(最小複数共通)を取得し、GridLayoutManagerを設定できます。
GridLayoutManager manager = new GridLayoutManager(context, 60); // set the grid with the MMC
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return 12; // 60/12 = 5 Columns
}
});