使いやすさを考慮して、マテリアル 3 の組み込みコンポーザブルの多く(androidx.compose.material3
)は、マテリアルの仕様に従ってコンポーザブルがアプリに配置される方法に基づいて、インセットを処理します。
インセット処理コンポーザブル
インセットを自動的に処理するマテリアル コンポーネントのリストは次のとおりです。
アプリバー
TopAppBar
/SmallTopAppBar
/CenterAlignedTopAppBar
/MediumTopAppBar
/LargeTopAppBar
: システムバーの上部と横方向をパディングとして適用します。これは、ウィンドウの上部で使用されるためです。BottomAppBar
: システムバーの下部と水平側をパディングとして適用します。
コンテンツ コンテナ
ModalDrawerSheet
/DismissibleDrawerSheet
/PermanentDrawerSheet
(モーダル ナビゲーション ドロワー内のコンテンツ): コンテンツに垂直方向と開始方向のインセットを適用します。ModalBottomSheet
: 下インセットを適用します。NavigationBar
: 下と横のインセットを適用します。NavigationRail
: 垂直と開始の切り込みを適用します。
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") } )