É possível ativar a tela de ponta a ponta no app chamando
enableEdgeToEdge
.
Isso deve ser suficiente para a maioria dos apps. Este guia descreve como ativar
o modo de tela cheia se o app precisar fazer isso sem usar enableEdgeToEdge
.
Posicionar o app em tela cheia
Use WindowCompat.setDecorFitsSystemWindows(window,
false)
para posicionar seu app atrás das barras do sistema, conforme mostrado no exemplo de código
abaixo:
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ões.
- 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.
- Modo de botão:o sistema aplica uma tela translúcida atrás das barras do sistema (para o nível 29 da API ou mais recente) ou uma barra do sistema transparente (para o nível 28 da API ou versões anteriores).
- Cor do conteúdo da barra de status:controla a cor do conteúdo da barra de status, como o horário e os ícones.
É possível editar o arquivo themes.xml
para definir a cor da barra de navegação e,
opcionalmente, definir a barra de status como transparente e a cor do conteúdo da barra de status como
escura.
<!-- 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 de
theme.xml
para controlar a cor do conteúdo da barra de status. Para isso, use a função
setAppearanceLightNavigationBars()
, transmitindo true
para mudar a cor do 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);