Chamar enableEdgeToEdge encapsula a lógica necessária para ser realmente
compatível com versões anteriores e, portanto, é a maneira recomendada de configurar uma tela
de ponta a ponta. Consulte a documentação do Compose e das visualizações
em vez deste guia para saber a maneira moderna de usar
enableEdgeToEdge.
Embora não seja recomendado, se o app precisar configurar manualmente uma tela de ponta a ponta, siga estas etapas:
- Chame
WindowCompat.setDecorFitsSystemWindows(window, false). - Defina as barras do sistema como transparentes.
- Processar encartes.
Dispor o app em tela cheia
Use WindowCompat.setDecorFitsSystemWindows(window, false)
para dispor 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 criar manualmente um layout de ponta a ponta para o Android 14 e versões anteriores, o app também precisa tornar as barras do sistema transparentes.
É possível editar o arquivo themes.xml para definir a cor da barra de status e de navegação como transparente e mudar a cor do ícone da barra de status.
<!-- 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 WindowInsetsControllerCompat em vez de theme.xml para controlar a cor do conteúdo da barra de status. Para fazer isso, use a
setAppearanceLightNavigationBars()
função, transmitindo true para mudar a cor de primeiro plano da Navigation 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);
Processar encartes
Por fim, o app precisa processar encartes para que a interface crítica evite as barras do sistema e o recorte da tela. Consulte a documentação do Compose e das visualizações para saber como processar encartes.