더 넓은 화면 디스플레이 수동으로 설정하기

enableEdgeToEdge를 호출하면 진정한 이전 버전과 호환되는 데 필요한 로직이 캡슐화되므로 가장자리부터 가장자리까지 디스플레이를 설정하는 데 권장되는 방법입니다. enableEdgeToEdge를 사용하여 더 넓은 화면을 구현하는 최신 방법은 이 가이드 대신 ComposeViews 문서를 참고하세요.

권장되지는 않지만 앱에서 더 넓은 디스플레이를 수동으로 설정해야 하는 경우 다음 단계를 따르세요.

  1. WindowCompat.setDecorFitsSystemWindows(window, false)를 호출합니다.
  2. 시스템 표시줄을 투명으로 설정합니다.
  3. 인셋 처리

전체 화면에 앱 배치

다음 코드 예와 같이 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);
}

시스템 표시줄 색상 변경

Android 14 이하에서 전체 화면 레이아웃을 수동으로 만들 때 앱은 시스템 표시줄도 투명하게 만들어야 합니다.

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>

theme.xml 대신 WindowInsetsControllerCompat API를 사용하여 상태 표시줄의 콘텐츠 색상을 제어할 수 있습니다. 이렇게 하려면 setAppearanceLightNavigationBars() 함수를 사용하여 true를 전달하여 탐색의 전경색을 밝은 색상으로 변경하거나 false를 전달하여 기본 색상으로 되돌립니다.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

자바

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);

인셋 처리

마지막으로 앱은 중요한 UI가 시스템 표시줄과 디스플레이 컷아웃을 피하도록 인셋을 처리해야 합니다. 인셋을 처리하는 방법을 알아보려면 Compose 문서를 참고하세요.