Para ativar a tela de ponta a ponta no app, chame
enableEdgeToEdge
.
Isso é suficiente para a maioria dos apps. Este guia descreve como ativar
de ponta a ponta se o app precisar fazer isso sem usar enableEdgeToEdge
.
Posicionar o app em tela cheia
Use WindowCompat.setDecorFitsSystemWindows(window,
false)
para mostrar 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, seu app precisa mudar as cores das barras do sistema para permitir que o conteúdo abaixo seja 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 atrá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 um scrim translúcido por trás das barras de sistema (para o nível de API 29 ou mais recente) ou uma barra de sistema transparente (para o nível de API 28 ou anterior).
- Cor do conteúdo da barra de status:controla a cor do conteúdo da barra de status, como a hora e os ícones.
Você pode 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 dela como
escuro.
<!-- 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>
É possível usar a API
WindowInsetsController
diretamente, mas é altamente recomendável usar a Biblioteca de Suporte
WindowInsetsControllerCompat
quando possível. Você pode usar a API WindowInsetsControllerCompat
em vez de
theme.xml
para controlar a cor do conteúdo da barra de status. Para fazer 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);