マテリアル 3 インセットを使用する

使いやすさを考慮して、組み込みのマテリアル デザイン 3 のコンポーザブル(androidx.compose.material3)の多くは、マテリアル デザインの仕様に従ってアプリにコンポーザブルが配置される方法に基づいて、インセットを自動的に処理します。

インセット処理コンポーザブル

インセットを自動的に処理するマテリアル コンポーネントの一覧は次のとおりです。

アプリバー

コンテンツ コンテナ

Scaffold

デフォルトでは、Scaffold は、使用できるパラメータ paddingValues としてインセットを提供します。Scaffold はコンテンツにインセットを適用しません。この責任はあなたにあります。たとえば、Scaffold 内の LazyColumn でこれらのインセットを使用するには:

Scaffold { innerPadding ->
    // innerPadding contains inset information for you to use and apply
    LazyColumn(
        // consume insets as scaffold doesn't do it by default
        modifier = Modifier.consumeWindowInsets(innerPadding),
        contentPadding = innerPadding
    ) {
        // ..
    }
}

次の動画は、エッジ ツー エッジ ディスプレイが無効と有効になっている Scaffold 内の LazyColumn を示しています。

デフォルトのインセットをオーバーライドする

コンポーザブルに渡される windowInsets パラメータを変更して、コンポーザブルの動作を構成できます。このパラメータは、代わりに適用する別のタイプのウィンドウ インセットにすることも、空のインスタンス WindowInsets(0, 0, 0, 0) を渡して無効にすることもできます。

たとえば、LargeTopAppBar でインセット処理を無効にするには、windowInsets パラメータを空のインスタンスに設定します。

LargeTopAppBar(
    windowInsets = WindowInsets(0, 0, 0, 0),
    title = {
        Text("Hi")
    }
)