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.

Posicionar o 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.