Ukrywanie paska nawigacyjnego

Z tej lekcji dowiesz się, jak ukryć pasek nawigacyjny, który został wprowadzony w Androidzie 4.0 (poziom API 14).

Chociaż ta lekcja dotyczy ukrywania paska nawigacyjnego, musisz tak zaprojektować aplikację, by jednocześnie ukrywał pasek stanu, jak opisano w sekcji Ukrywanie paska stanu. Ukrycie pasków nawigacji i stanu (przy zachowaniu łatwości dostępu) sprawia, że treści zajmują całą przestrzeń wyświetlania i zapewniają użytkownikom lepsze wrażenia.

paski systemowe

Rysunek 1. Pasek nawigacyjny.

Ukrywanie paska nawigacyjnego

Pasek nawigacyjny możesz ukryć, korzystając z flagi SYSTEM_UI_FLAG_HIDE_NAVIGATION. Ten fragment kodu ukrywa pasek nawigacyjny i pasek stanu:

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);

Uwaga:

  • W ten sposób dotknięcie dowolnego miejsca na ekranie spowoduje, że pasek nawigacyjny (i pasek stanu) pojawi się ponownie i pozostanie widoczny. Interakcja z użytkownikiem powoduje wyczyszczenie flag.
  • Gdy flagi zostaną wyczyszczone, konieczne będzie ich zresetowanie w aplikacji, aby można było je ponownie ukryć. Informacje o tym, jak nasłuchiwać zmian widoczności interfejsu, by aplikacja odpowiednio zareagowała, znajdziesz w artykule Reagowanie na zmiany widoczności interfejsu.
  • To, gdzie ustawisz flagi interfejsu, ma znaczenie. Jeśli ukryjesz paski systemowe w metodzie onCreate() aktywności, a użytkownik naciśnie przycisk ekranu głównego, paski systemowe pojawią się ponownie. Gdy użytkownik ponownie otworzy aktywność, wywołanie onCreate() nie będzie możliwe, więc paski systemowe pozostaną widoczne. Jeśli chcesz, aby interfejs systemu pozostawał utrzymywany w miarę przechodzenia przez użytkownika do Twojej aktywności i z niej wychodząc, ustaw flagi interfejsu w onResume() lub onWindowFocusChanged().
  • Metoda setSystemUiVisibility() działa tylko wtedy, gdy widok, z którego ją wywołujesz, jest widoczny.
  • Opuszczenie widoku powoduje wyczyszczenie flag ustawionych z polem setSystemUiVisibility().

Umieszczanie treści za paskiem nawigacyjnym

W Androidzie 4.1 i nowszych zawartość aplikacji można ustawić tak, aby była widoczna za paskiem nawigacyjnym, tak aby jej rozmiar nie zmieniał się wraz z ukryciem i wyświetlaniem zawartości paska nawigacyjnego. Aby to zrobić, użyj funkcji SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Może być też konieczne użycie SYSTEM_UI_FLAG_LAYOUT_STABLE, by utrzymać stabilny układ aplikacji.

W przypadku tego podejścia to Ty musisz zadbać o to, aby kluczowe części interfejsu użytkownika nie były zasłonięte paskami systemu. Więcej informacji na ten temat znajdziesz w lekcji Ukrywanie paska stanu.