Я пытаюсь реализовать иммерсивный (полноэкранный) режим в своем приложении для Android и столкнулся с проблемой, которую не могу решить.
Я следую руководству по режиму погружения и образцам приложений из Документов Android , и оно в основном работает, но при выходе из режима погружения панель приложений (панель действий) в моем приложенииостается в режиме наложения (он не запускается в режиме наложения при запуске операции), скрывая часть содержимого моей деятельности, и я не могу понять, какую комбинацию флагов пользовательского интерфейса и побитовых операторов мне нужно предоставить setSystemUiVisibility()
, когдавыход из режима Immersive Mode, чтобы вернуть приложение в исходное состояние (с панелью приложений, которая не находится в режиме наложения).
У меня есть демонстрационное приложение , которое показывает проблему , и относительные биты кода выглядят следующим образом:
Стиль, используя встроенную панель инструментов / панель приложения / панель действий, хотяЯ попытался использовать свою собственную панель инструментов и установить ее в качестве панели действий поддержки, с теми же результатами.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Нажатие кнопки «Переключить режим погружения» в упражнении запускает следующий метод, который следуетРуководство по Android (см. Ссылку выше) для режима погружения.
private void toggleImmersiveMode() {
View decorView = getWindow().getDecorView();
if (mIsImmersiveEnabled) {
// Immersive Mode is on, turn it off.
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
} else {
// Immersive Mode is off, turn it on.
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
mIsImmersiveEnabled = !mIsImmersiveEnabled;
}
Я не пытаюсь отключить переход панели приложений в режим наложения при входе в режим погружения (я хочу эту функцию), но могуt выяснить, как заставить его отключить режим наложения при выходе из иммерсивного режима.Любая помощь будет оценена.
вот несколько скриншотов демонстрационного приложения:
при первоначальном запуске
после входаПолноэкранный режим
после выхода из полноэкранного режима