The Full Guide to Supporting Edge-to-Edge On Android 15+ (Compose + XML)
- 안드로이드 15 이상에서는 모든 앱이 Edge-to-Edge를 사용하며, 시스템 UI 요소(상태 표시줄, 탐색 바 등)와 앱 콘텐츠 간의 중첩 문제 발생. ⚠️
- Jetpack Compose에서는 Scaffold를 사용하여 Window Insets를 쉽게 처리 가능. Scaffold의
contentPadding
또는 Modifier.padding
을 이용하여 시스템 UI 요소의 크기만큼 패딩 적용. 🧱
- Compose에서 Scaffold는 기본적으로
systemBars
Window Insets를 적용하지만, 카메라 등의 Display Cutout은 고려하지 않으므로, safeDrawing
또는 safeContent
Window Insets 사용 권장. 📸
- XML 기반 레이아웃에서는
fitsSystemWindows="true"
속성을 사용하여 Window Insets 적용 가능하지만, 루트 레이아웃에 적용 시 문제 발생 가능성 존재. ⚙️
- XML에서 다양한 View에 서로 다른 Window Insets를 적용하려면
setOnApplyWindowInsetsListener
를 사용하여 각 View에 대한 Insets를 개별적으로 처리해야 함. 🎯