enableEdgeToEdge
를 호출하여 앱에서 더 넓은 화면 표시를 사용 설정할 수 있습니다.
대부분의 앱에는 이 정도면 충분합니다. 이 가이드에서는 앱에서 enableEdgeToEdge
를 사용하지 않고도 전체 화면을 사용 설정해야 하는 경우 이를 사용하는 방법을 설명합니다.
전체 화면에서 앱 레이아웃 지정
다음 코드 예와 같이 WindowCompat.setDecorFitsSystemWindows(window,
false)
를 사용하여 시스템 표시줄 뒤에 앱을 배치합니다.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) }
자바
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WindowCompat.setDecorFitsSystemWindows(getWindow(), false); }
시스템 표시줄 색상 변경하기
더 넓은 레이아웃에서 작동할 때 앱은 아래의 콘텐츠가 표시되도록 시스템 표시줄의 색상을 변경해야 합니다. 앱이 이 단계를 실행하면 시스템은 동작 탐색 모드와 버튼 모드에서 사용자 인터페이스의 모든 시각적 보호를 처리합니다.
- 동작 탐색 모드: 시스템은 시스템 표시줄의 콘텐츠가 그 뒤의 콘텐츠에 따라 색상을 변경하는 동적 색상 조정을 적용합니다. 다음 예에서 탐색 메뉴의 핸들은 밝은 콘텐츠 위에 있으면 어두운 색상으로, 어두운 콘텐츠 위에 있으면 밝은 색상으로 변경됩니다.
- 버튼 모드: 시스템은 시스템 표시줄 뒤에 반투명 스크림 (API 수준 29 이상) 또는 투명 시스템 표시줄 (API 수준 28 이하)을 적용합니다.
- 상태 표시줄 콘텐츠 색상: 시간 및 아이콘과 같은 상태 표시줄 콘텐츠의 색상을 제어합니다.
themes.xml
파일을 수정하여 탐색 메뉴의 색상을 설정하고 원하는 경우 상태 표시줄을 투명하게, 상태 표시줄 콘텐츠 색상을 어둡게 설정할 수 있습니다.
<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
<item name="android:navigationBarColor">
@android:color/transparent
</item>
<!-- Optional: set to transparent if your app is drawing behind the status bar. -->
<item name="android:statusBarColor">
@android:color/transparent
</item>
<!-- Optional: set for a light status bar with dark content. -->
<item name="android:windowLightStatusBar">
true
</item>
</style>
WindowInsetsController
API를 직접 사용할 수도 있지만 가능하면 지원 라이브러리 WindowInsetsControllerCompat
를 사용하는 것이 좋습니다. theme.xml
대신 WindowInsetsControllerCompat
API를 사용하여 상태 표시줄의 콘텐츠 색상을 제어할 수 있습니다. 이렇게 하려면 setAppearanceLightNavigationBars()
함수를 사용하여 true
를 전달하여 탐색의 전경 색상을 밝은 색상으로 변경하거나 false
를 전달하여 기본 색상으로 되돌립니다.
Kotlin
val windowInsetsController = ViewCompat.getWindowInsetsController(window.decorView) windowInsetsController?.isAppearanceLightNavigationBars = true
Java
WindowInsetsControllerCompat windowInsetsController = ViewCompat.getWindowInsetsController(getWindow().getDecorView()); if (windowInsetsController == null) { return; } windowInsetsController.setAppearanceLightNavigationBars(true);