뷰 및 Compose에서 인셋 사용

앱에 Compose 코드와 뷰 코드가 모두 포함된 경우 각 코드에서 사용해야 하는 시스템 인셋을 명시하고 인셋이 상위 뷰에 전달되는지 확인해야 할 수 있습니다.

기본 인셋 재정의

화면에 동일한 계층 구조에 뷰와 Compose 코드가 모두 있는 경우 기본 인셋을 재정의해야 할 수 있습니다. 이 경우 인셋을 사용해야 하는 요소와 무시해야 하는 요소를 명시적으로 지정해야 합니다.

예를 들어 가장 바깥쪽 레이아웃이 Android 뷰 레이아웃인 경우 뷰 시스템에서 인셋을 사용하고 Compose에서는 무시해야 합니다. 또는 최외부 레이아웃이 컴포저블인 경우 Compose에서 인셋을 사용하고 AndroidView 컴포저블을 적절하게 패딩해야 합니다.

기본적으로 각 ComposeViewWindowInsetsCompat 수준의 소비에서 모든 인셋을 사용합니다. 이 기본 동작을 변경하려면 ComposeView.consumeWindowInsetsfalse로 설정합니다.

뷰의 이전 버전과 호환되는 인셋 전달

앱에 뷰 코드가 포함된 경우 Android 10 (API 수준 29) 이하를 실행하는 기기에서 인셋이 상위 뷰에 전달되는지 확인해야 할 수 있습니다. 자세한 내용은 가득 찬 화면 뷰 가이드를 참고하세요.

시스템 표시줄 아이콘

enableEdgeToEdge를 호출하면 기기 테마가 변경될 때 시스템 표시줄 아이콘 색상이 업데이트됩니다.

더 넓은 화면으로 전환하는 동안 시스템 표시줄 아이콘 색상이 앱 배경과 대비되도록 수동으로 업데이트해야 할 수 있습니다. 예를 들어 밝은 상태 표시줄 아이콘을 만들려면 다음을 실행합니다.

Kotlin

WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

Java

WindowCompat.getInsetsController(window, window.getDecorView())
    .setAppearanceLightStatusBars(false);