Configurar manualmente a exibição de ponta a ponta

Chamar enableEdgeToEdge encapsula a lógica necessária para ser verdadeiramente compatível com versões anteriores e, portanto, é a maneira recomendada de configurar uma exibição de ponta a ponta. Consulte a documentação do Compose e do Views em vez deste guia para saber como usar o enableEdgeToEdge de ponta a ponta de forma moderna.

Embora não seja recomendado, se o app precisar configurar manualmente uma tela de ponta a ponta, siga estas etapas:

  1. Chame o método WindowCompat.setDecorFitsSystemWindows(window, false).
  2. Defina as barras de sistema como transparentes.
  3. Processar encartes.

Disponha seu app em tela cheia

Use WindowCompat.setDecorFitsSystemWindows(window, false) para dispor seu app atrás das barras de sistema, conforme mostrado no exemplo de código a seguir:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

Mudar a cor das barras de sistema

Ao criar manualmente um layout de ponta a ponta para o Android 14 e versões anteriores, o app também precisa tornar as barras de sistema transparentes.

Você pode editar o arquivo themes.xml para definir a cor da barra de status e de navegação como transparente e mudar a cor do ícone da barra de status.

<!-- 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>

Use a API WindowInsetsControllerCompat em vez de theme.xml para controlar a cor do conteúdo da barra de status. Para isso, use a função setAppearanceLightNavigationBars() e transmita true para mudar a cor de primeiro plano da navegação para uma cor clara ou false para reverter à cor padrão.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

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

windowInsetsController.setAppearanceLightNavigationBars(true);

Processar encartes

Por fim, seu app precisa processar encartes para que a interface crítica evite as barras de sistema e o corte da tela. Consulte a documentação do Compose e do Views para saber como processar encartes.