Установите для фрагмента значение FullScreen при использовании компонента навигации - Android

Aug 20 2020

Недавно я преобразовал свое приложение в архитектуру Single Activity и попытался установить один конкретный фрагмент в полноэкранный режим. Стандартный полноэкранный код активности не работает для фрагментов

final int flags =
            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;

Я нашел этот Android-набор в полноэкранном режиме из фрагмента . Но установка его на FLAG_LAYOUT_NO_LIMITS заставляет PagerSnapHelper во фрагменте "прыгать" при переключении между FLAG_LAYOUT_NO_LIMITS и его отмене.

Итак, мой вопрос: есть ли другой способ установить фрагмент в полноэкранный режим без использования FLAG_LAYOUT_NO_LIMITS.

Ответы

3 ianhanniballake Aug 21 2020 at 04:55

Вам никогда не нужно использовать FLAG_LAYOUT_NO_LIMITSили применять fitsSystemWindows="true"глобально на уровне активности - это то, что помешает вашему фрагменту перейти в полноэкранный режим. Вместо этого добавляйте только fitsSystemWindowsфрагменты / отдельные компоненты, которые в противном случае перекрывали бы строки состояния / системы. Это гарантирует, что ваш полноэкранный фрагмент сможет занимать весь размер и не будет вставлен по краям.