スクロール可能なグリッドを作成する

遅延グリッドを使用して大規模なデータセットと動的コンテンツを管理することで、アプリのパフォーマンスを向上させることができます。Lazy グリッド コンポーザブルを使用すると、複数の列または行にまたがるスクロール可能なコンテナにアイテムを表示できます。

バージョンの互換性

この実装では、プロジェクトの minSDK を API レベル 21 以上に設定する必要があります。

依存関係

グリッドの向きを決定する

LazyHorizontalGrid コンポーザブルと LazyVerticalGrid コンポーザブルは、アイテムのグリッド表示に対するサポートを提供しています。Lazy 垂直グリッドは、複数の列にわたって、上下にスクロール可能なコンテナにアイテムを表示し、Lazy 水平グリッドは横軸でそれと同じように動作します。

スクロール可能なグリッドを作成する

次のコードは、3 つの列を持つ水平スクロール グリッドを作成します。

@Composable
fun ScrollingGrid() {
    val itemsList = (0..15).toList()

    val itemModifier = Modifier
        .border(1.dp, Color.Blue)
        .width(80.dp)
        .wrapContentSize()

    LazyHorizontalGrid(
        rows = GridCells.Fixed(3),
        horizontalArrangement = Arrangement.spacedBy(16.dp),
        verticalArrangement = Arrangement.spacedBy(16.dp)
    ) {
        items(itemsList) {
            Text("Item is $it", itemModifier)
        }

        item {
            Text("Single item", itemModifier)
        }
    }
}

コードに関する主なポイント

  • LazyHorizontalGrid コンポーザブルは、グリッドの横向きを決定します。
    • 垂直グリッドを作成するには、代わりに LazyVerticalGrid を使用します。
  • rows プロパティは、グリッド コンテンツの配置方法を指定します。
    • 縦型グリッドの場合は、columns プロパティを使用して配置を指定します。
  • items(itemsList) は、itemsListLazyHorizontalGrid に追加します。ラムダは、アイテムごとに Text コンポーザブルをレンダリングし、テキストをアイテムの説明に設定します。
  • item()LazyHorizontalGrid に 1 つのアイテムを追加しますが、ラムダは items() と同様に 1 つの Text コンポーザブルをレンダリングします。
  • GridCells.Fixed は、行または列の数を定義します。
  • できるだけ多くの行を含むグリッドを作成するには、GridCells.Adaptive を使用して行数を設定します。

    次のコードでは、20.dp 値で、すべての列が 20.dp 以上で、すべての列の幅が同じであることを指定しています。画面の幅が 88 dp の場合、4 つの列があり、それぞれ 22 dp です。

結果

図 1. LazyHorizontalGrid を使用した水平方向にスクロール可能なグリッド。

このガイドを含むコレクション

このガイドは、Android 開発の幅広い目標を網羅する、厳選されたクイックガイド コレクションの一部です。

リストとグリッドを使用すると、アプリでコレクションを視覚的に魅力的でユーザーが使いやすい形式で表示できます。
コンポーズ可能な関数を使用して、マテリアル デザインのデザイン システムに基づいて美しい UI コンポーネントを簡単に作成する方法を学びます。
この動画シリーズでは、さまざまな Compose API を紹介し、利用可能な API とその使用方法を簡単に説明します。

ご質問やご意見がある場合

よくある質問のページでクイックガイドをご覧になるか、お問い合わせフォームからご意見をお寄せください。