É 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.
- 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).
- Cor do conteúdo da barra de status:controla a cor do conteúdo da barra de status, como como hora e ícones.
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);