Добавление функции, скрывающей панель навигации

В этом уроке описывается, как скрыть панель навигации, которая была представлена в Android 4.0 (уровень API 14).

Хотя в этом уроке рассматривается скрытие панели навигации, вы должны разработать свое приложение так, чтобы одновременно скрывать строку состояния, как описано в разделе Скрытие строки состояния. Скрыв панели навигации и строку состояния (сохранив при этом к ним легкий доступ), вы сможете использовать для контента все пространство экрана, что обеспечит более захватывающий пользовательский опыт.

системные строки

Рисунок 1. Панель навигации.

Как скрыть панель навигации

Панель навигации можно скрыть с помощью флага SYSTEM_UI_FLAG_HIDE_NAVIGATION. Этот фрагмент кода позволяет скрыть и панель навигации, и строку состояния:

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

объявлений.

  • При таком подходе касание в любом месте экрана приводит к повторному появлению панели навигации (и строки состояния), которая остается видимой. В результате взаимодействия с пользователем пометки удаляются.
  • После этого вам нужно будет снова установить флаги, чтобы скрыть панели. В разделе Реакция на изменения видимости пользовательского интерфейса рассказывается, как отслеживать изменения видимости пользовательского интерфейса, чтобы ваше приложение могло реагировать соответствующим образом.
  • Важно, где вы устанавливаете флаги пользовательского интерфейса. Если вы скроете системные строки в методе onCreate() операции и пользователь нажмет кнопку "Домой", системные строки появятся снова. Когда пользователь снова откроет действие, метод onCreate() не будет вызван, поэтому системные строки останутся видимыми. Если вы хотите, чтобы изменения системного интерфейса сохранялись, когда пользователь переходит в ваше действие и выходит из него, установите флаги интерфейса в onResume() или onWindowFocusChanged().
  • Метод setSystemUiVisibility() работает, только если представление, из которого он вызывается, видимо.
  • При выходе из режима просмотра флажки, установленные с помощью setSystemUiVisibility(), будут сняты.

Как сделать так, чтобы контент отображался за панелью навигации

В Android 4.1 и более поздних версиях можно настроить показ контента приложения за панелью навигации, чтобы его размер не менялся при ее скрытии и отображении. Для этого используйте SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Чтобы макет приложения оставался стабильным, вам также может потребоваться использовать SYSTEM_UI_FLAG_LAYOUT_STABLE.

В этом случае вы должны убедиться, что системные строки не перекрывают важные элементы интерфейса приложения. Дополнительную информацию по этой теме можно найти в уроке Скрытие строки состояния.