使いやすさを考慮して、組み込みのマテリアル デザイン 3 のコンポーザブル(androidx.compose.material3)の多くは、マテリアル デザインの仕様に従ってアプリにコンポーザブルが配置される方法に基づいて、インセットを自動的に処理します。
インセット処理コンポーザブル
インセットを自動的に処理する マテリアル コンポーネントの一覧は次のとおりです。
アプリバー
TopAppBar/SmallTopAppBar/CenterAlignedTopAppBar/MediumTopAppBar/LargeTopAppBar: ウィンドウの上部で使用されるため、システムバーの上部と水平の辺をパディングとして適用します。BottomAppBar: システムバーの下部と水平の辺をパディングとして適用します。
コンテンツ コンテナ
ModalDrawerSheet/DismissibleDrawerSheet/PermanentDrawerSheet(モーダル ナビゲーション ドロワー内のコンテンツ): コンテンツに垂直方向と開始方向のインセットを適用します。ModalBottomSheet: 下のインセットを適用します。NavigationBar: 下と水平のインセットを適用します。NavigationRail: vertical と start のインセットを適用します。
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 を示しています。
通常、Scaffold で PaddingValues パラメータを使用するだけで、システム UI やディスプレイの切り抜きから UI をインセットして表示できます。Scaffold を使用して UI に過剰なパディングが適用されないようにする場合は、ルーラー、パディング修飾子、インセット サイズ修飾子などのインセット処理方法を追加で使用しないでください。
デフォルトのインセットをオーバーライドする
コンポーザブルに渡される windowInsets パラメータを変更して、コンポーザブルの動作を構成できます。このパラメータは、代わりに適用する別のタイプのウィンドウ インセットにすることも、空のインスタンス WindowInsets(0, 0, 0, 0) を渡して無効にすることもできます。
たとえば、LargeTopAppBar でインセット処理を無効にするには、windowInsets パラメータを空のインスタンスに設定します。
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )