Esta lição descreve como ocultar a barra de navegação, que foi introduzida no Android 4.0 (nível 14 da API).
Embora esta lição se concentre em ocultar a barra de navegação, projete seu app para ocultar a barra de status ao mesmo tempo, conforme descrito em Ocultar a barra de status. Ocultar as barras de navegação e de status, mantendo-as prontamente acessíveis, permite que o conteúdo use todo o espaço da tela, proporcionando uma experiência do usuário mais imersiva.
Ocultar a barra de navegação
É possível ocultar a barra de navegação usando a
flag SYSTEM_UI_FLAG_HIDE_NAVIGATION
. Este snippet oculta a barra de navegação e a barra de status:
Kotlin
window.decorView.apply { // Hide both the navigation bar and the status bar. // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as // a general rule, you should design your app to hide the status bar whenever you // hide the navigation bar. systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN }
Java
View decorView = getWindow().getDecorView(); // Hide both the navigation bar and the status bar. // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as // a general rule, you should design your app to hide the status bar whenever you // hide the navigation bar. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions);
Observe o seguinte:
- Nessa abordagem, tocar em qualquer lugar da tela faz com que a barra de navegação (e de status) reapareça e permaneça visível. A interação do usuário apaga as sinalizações.
- Depois que as sinalizações forem apagadas, o app vai precisar redefini-las se você quiser ocultar as barras novamente. Consulte Responder a mudanças de visibilidade da IU para ver uma discussão sobre como detectar mudanças de visibilidade da IU para que seu app possa responder de maneira adequada.
- Onde você define as sinalizações da IU faz toda a diferença. Se você ocultar as barras de sistema no método
onCreate()
da sua atividade e o usuário pressionar "Início", as barras do sistema reaparecerão. Quando o usuário reabrir a atividade,onCreate()
não será chamado, então as barras do sistema permanecerão visíveis. Se você quiser que as mudanças na IU do sistema persistam enquanto o usuário entra e sai da atividade, defina sinalizações de interface emonResume()
ouonWindowFocusChanged()
. - O método
setSystemUiVisibility()
só terá efeito se a visualização chamada estiver visível. - Navegar para fora da visualização faz com que as flags
definidas com
setSystemUiVisibility()
sejam apagadas.
Fazer o conteúdo aparecer por trás da barra de navegação
No Android 4.1 e em versões mais recentes, é possível definir o conteúdo do aplicativo para que ele apareça atrás
da barra de navegação para que ele não seja redimensionado conforme a barra de navegação
é ocultada e
exibida. Para fazer isso, use
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
.
Também pode ser necessário usar
SYSTEM_UI_FLAG_LAYOUT_STABLE
para ajudar o app a manter um
layout estável.
Ao usar essa abordagem, é sua responsabilidade garantir que partes críticas da IU do app não sejam cobertas pelas barras do sistema. Para mais discussões sobre esse tópico, consulte a lição Como ocultar a barra de status.