Configurar manualmente a exibição de ponta a ponta

É possível ativar a exibição de ponta a ponta no app chamando enableEdgeToEdge Isso é suficiente para a maioria dos apps. Neste guia, descrevemos como ativar de ponta a ponta, se o app precisar fazer isso sem usar enableEdgeToEdge.

Colocar o app em tela cheia

Usar WindowCompat.setDecorFitsSystemWindows(window, false) para posicionar o app atrás das barras do sistema, conforme mostrado no código a seguir exemplo:

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 do sistema

Ao operar em um layout de ponta a ponta, seu app precisa mudar as cores do as barras do sistema para permitir que o conteúdo abaixo fique visível. Depois do app executar essa etapa, o sistema cuida de toda a proteção visual do usuário no modo de navegação por gestos e no modo de botão.

  • Modo de navegação por gestos:o sistema aplica a adaptação dinâmica de cores ao o conteúdo das barras do sistema muda de cor com base no conteúdo atrás para resolvê-los com rapidez. No exemplo a seguir, o identificador na barra de navegação muda para uma cor escura quando está acima do conteúdo claro e para uma cor clara quando está acima conteúdo escuro.
.
Figura 1. Mudanças de cor na navegação por gestos modo
  • Modo de botão:o sistema aplica uma cor translúcida scrim (em inglês) atrás das barras de sistema (para API de nível 29 ou posterior) ou um sistema transparente (para API de nível 28 ou anterior).
.
Uma imagem mostrando barras do sistema translúcidas
Figura 2. Scrim translúcido atrás das barras do sistema.
  • Cor do conteúdo da barra de status:controla a cor do conteúdo da barra de status, como como hora e ícones.
.
Uma imagem mostrando a cor do conteúdo da barra de status
Figura 3. Cor do conteúdo da barra de status.

Você pode editar o arquivo themes.xml para definir a cor da barra de navegação. opcionalmente, para definir a barra de status como transparente e a cor do conteúdo da barra de status como escurecer.

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

Você pode usar o API WindowInsetsController mas recomendamos o uso da Biblioteca de Suporte WindowInsetsControllerCompat sempre que possível. É possível usar a API WindowInsetsControllerCompat em vez theme.xml para controlar a cor do conteúdo da barra de status. Para isso, use o método setAppearanceLightNavigationBars() , transmitindo true para mudar a cor de primeiro plano da navegação para uma cor clara ou false para reverter para a 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);