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