Configurar manualmente a exibição de ponta a ponta

É possível ativar a tela 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

Use WindowCompat.setDecorFitsSystemWindows(window, false) para posicionar o app atrás das barras do 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 do sistema

Ao operar em um layout de ponta a ponta, o app precisa mudar as cores das barras do sistema para que o conteúdo abaixo fique visível. Depois que o app realiza essa etapa, o sistema processa toda a proteção visual da interface 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, em que o conteúdo das barras do sistema muda de cor com base no conteúdo por trás delas. No exemplo abaixo, a alça 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 do 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 a API WindowInsetsController diretamente, mas é altamente recomendável usar a 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);