アプリに Compose コードと View コードの両方が含まれている場合は、それぞれがどのシステム インセットを使用するかを明示し、インセットが兄弟ビューにディスパッチされるようにする必要があります。
デフォルトのインセットをオーバーライドする
画面の同じ階層に View と Compose の両方のコードがある場合は、デフォルトのインセットをオーバーライドする必要があるかもしれません。この場合、どちらがインセットを使用し、どちらがインセットを無視するかを明示する必要があります。
たとえば、最外側のレイアウトが Android View レイアウトの場合、View システムでインセットを使用し、Compose では無視する必要があります。また、最外側のレイアウトがコンポーザブルである場合は、Compose でインセットを使用し、それに応じて AndroidView
コンポーザブルをパディングする必要があります。
デフォルトでは、各 ComposeView
は WindowInsetsCompat
レベルの消費量ですべてのインセットを消費します。このデフォルトの動作を変更するには、AbstractComposeView.consumeWindowInsets
を false
に設定します。
ビューの下位互換性のあるインセット ディスパッチ
アプリに Views コードが含まれている場合は、Android 10(API レベル 29)以下を搭載したデバイスで、インセットが兄弟ビューにディスパッチされることを確認する必要があるかもしれません。詳しくは、エッジ ツー エッジのビューガイドをご覧ください。
システムバー アイコン
enableEdgeToEdge
を呼び出すと、デバイスのテーマが変更されたときにシステムバー アイコンの色が更新されます。
エッジ ツー エッジにする場合、アプリの背景とコントラストをなすように、システムバー アイコンの色を手動で更新する必要があるかもしれません。たとえば、ライト ステータスバー アイコンを作成するには:
Kotlin
WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = false
Java
WindowCompat.getInsetsController(window, window.getDecorView()) .setAppearanceLightStatusBars(false);