뷰 및 Compose에서 인셋 사용

앱에 Compose 코드와 뷰 코드가 모두 포함된 경우 각 코드가 사용할 시스템 인셋을 명시하고 인셋이 형제 뷰에 디스패치되도록 해야 할 수 있습니다.

기본 인셋 재정의

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

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

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

뷰의 하위 호환 인셋 디스패치

앱에 Views 코드가 포함된 경우 Android 10 (API 수준 29) 이하를 실행하는 기기에서 인셋이 형제 뷰에 디스패치되는지 확인해야 할 수 있습니다. 자세한 내용은 더 넓은 화면 뷰 가이드를 참고하세요.

시스템 표시줄 아이콘

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

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

Kotlin

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

Java

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