0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LazyColumnとColumn、LazyRowとRowの違いとは?

Posted at

はじめに

Jetpack Composeでは、縦方向に子要素を並べるためのColumnLazyColumn、横方向に子要素を並べるためのRowLazyRowが提供されています。これらのコンポーネントは似ているようで異なる特徴を持っています。

ColumnとLazyColumnの違い

Columnとは?

Columnは、縦方向に子要素を並べるためのコンポーネントです。すべての子要素を一度に描画するため、少数の要素を並べる場合に適しています。

特徴

  • 子要素を一度にすべて描画する。
  • スクロール機能はデフォルトでは提供されない。
  • 少数の要素を並べる場合に適している。

使用例

@Composable
fun ColumnExample() {
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.spacedBy(8.dp),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        repeat(10) { index ->
            Text(text = "Item $index", modifier = Modifier.padding(16.dp))
        }
    }
}

LazyColumnとは?

LazyColumnは、縦方向に子要素を並べるスクロール可能なコンポーネントです。必要な部分だけを描画する「遅延描画」を行うため、大量のデータを効率的に表示できます。

特徴

  • スクロール可能。
  • 必要な部分だけを描画するため、パフォーマンスに優れる。
  • 大量のデータを表示する場合に適している。

使用例

@Composable
fun LazyColumnExample() {
    LazyColumn(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.spacedBy(8.dp)
    ) {
        items(100) { index ->
            Text(text = "Item $index", modifier = Modifier.padding(16.dp))
        }
    }
}

ColumnとLazyColumnの違い

特徴 Column LazyColumn
描画方法 子要素をすべて描画 必要な部分だけ遅延描画
スクロール機能 デフォルトではなし デフォルトでスクロール可能
適した用途 少数の要素を並べる場合 大量のデータを表示する場合

RowとLazyRowの違い

Rowとは?

Rowは、横方向に子要素を並べるためのコンポーネントです。すべての子要素を一度に描画するため、少数の要素を並べる場合に適しています。

特徴

  • 子要素を一度にすべて描画する。
  • スクロール機能はデフォルトでは提供されない。
  • 少数の要素を並べる場合に適している。

使用例

@Composable
fun RowExample() {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.spacedBy(8.dp),
        verticalAlignment = Alignment.CenterVertically
    ) {
        repeat(10) { index ->
            Text(text = "Item $index", modifier = Modifier.padding(16.dp))
        }
    }
}

LazyRowとは?

LazyRowは、横方向に子要素を並べるスクロール可能なコンポーネントです。必要な部分だけを描画する「遅延描画」を行うため、大量のデータを効率的に表示できます。

特徴

  • スクロール可能。
  • 必要な部分だけを描画するため、パフォーマンスに優れる。
  • 大量のデータを表示する場合に適している。

使用例

@Composable
fun LazyRowExample() {
    LazyRow(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.spacedBy(8.dp)
    ) {
        items(100) { index ->
            Text(text = "Item $index", modifier = Modifier.padding(16.dp))
        }
    }
}

RowとLazyRowの違い

特徴 Row LazyRow
描画方法 子要素をすべて描画 必要な部分だけ遅延描画
スクロール機能 デフォルトではなし デフォルトでスクロール可能
適した用途 少数の要素を並べる場合 大量のデータを表示する場合

まとめ

Jetpack ComposeのColumn/LazyColumnとRow/LazyRowは、それぞれ縦方向・横方向のレイアウトを構築するためのコンポーネントですが、描画方法やスクロール機能に違いがあります。用途に応じてこれらのコンポーネントを使い分けることで、効率的なUIを構築することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?