Как я могу динамически скрыть статус и панель навигации полностью ?
Приложение содержит обычный навигационный ящик с панелью приложения / панелью инструментов и кнопками FAB.
При переключении в полноэкранный режим содержимое навигации и строки состояния прокручивается. Две пустые полосы остаются на экране. Я хочу, чтобы эти пустые полосы были скрыты.
Я создал минимальное демонстрационное приложение . Слева находится обычное приложение. При нажатии на FAB приложение должно отображаться в полноэкранном режиме.
![enter image description here](https://i.stack.imgur.com/UXAPz.png)
Как я могу скрыть бары?
ВОПРОС: Напишите, пожалуйста, какие изменения необходимы в минимальном демонстрационном проекте?
Я пробовал много разных альтернатив.
Альтернатива 1: просто скрыть это
View decorView = MainActivity.mainActivity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
Нет, не работает. При изменении colorPrimaryDark (ниже) этот цвет помещается на панель.
<style name="Base.Theme.Xyz" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorPrimaryDark">@color/my_primary_dark</item>
Альтернатива-2: Я использую IMMERSE_STICKY, но это не имеет значения в поведении.
Альтернатива-3: Раньше я также пробовал сочетания этих элементов стилей: ничего не изменилось.
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowTranslucentNavigation">true</item>
Альтернатива-4: Я прочитал этот знаменитый пост на весь экран , но это не помогает.
Альтернатива-5: Еще один знаменитый трюк не помогает:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
Альтернатива-6: возвращение к тому, что работает. Получение лучшего диагноза.
После прочтения этого поста я сначала создал простое полноэкранное приложение (AS> new ...). Это отлично работает. Затем я начал создавать стандартное приложение с навигационным ящиком. Затем я начал перемещать основной код полноэкранного приложения в приложение Navigation Drawer ... и это приводит к тому же поведению. Результат в проекте.