Правильный способ переключения фрагментов из стабильного в полноэкранный режим? - PullRequest
0 голосов
/ 30 октября 2019

Я использую одно действие - многофрагментную архитектуру с нижней панелью навигации. Некоторые фрагменты используют флаг стабильной компоновки, а другие - полноэкранный флаг макета. Однако при переключении с SYSTEM_UI_FLAG_LAYOUT_STABLE на SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN (и наоборот) контент не заполняет экран должным образом - при переключении на стабильный нижний уровень опускается за пределы навигации, а при переключении обратно в полноэкранный режим контент незаполните экран правильно. Если я переключаюсь на другой полноэкранный фрагмент из этого, проблема исправляется сама собой. Я хотел знать, есть ли способ предотвратить возникновение этой проблемы.

Этот код я использую для переключения между стабильным и полноэкранным режимом:

fun makeFullScreen() {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}

fun makeStable() {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
}

Соответствующие функции вызываются в функции onResume () каждого фрагмента. Любая помощь будет принята с благодарностью.

Вы можете увидеть скриншоты проблемы здесь: https://imgur.com/a/B7qh98Y

Спасибо

Редактировать 1: Просто чтобы уточнить, я в основном хочу это такчто нижняя панель навигации остается в нужном месте внизу, а не «прыгающее» поведение, которое вы видите на скриншотах.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

После долгих поисков (я уже несколько недель изучал эту проблему) я наконец-то нашел то, что мне подходит. Ответ представлен здесь: BottomNavigationView выскакивает вверх, оставляя пустое пространство при полноэкранном режиме

0 голосов
/ 30 октября 2019

Попробуйте это

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
...