Установите для фрагмента полноэкранный режим при использовании компонента навигации — Android

Недавно я преобразовал свое приложение в архитектуру 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.


person Saravana Gunaseelan    schedule 19.08.2020    source источник
comment
Вам никогда не понадобится FLAG_LAYOUT_NO_LIMITS. С чего ты взял, что тебе это нужно?   -  person ianhanniballake    schedule 20.08.2020
comment
Таким образом, в основном добавляются флаги final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .... Скрывает строку состояния и панель навигации. Но не масштабирует фрагмент, чтобы заполнить пространство. Это потому, что я использую fitsSystemWindows=true в верхнем макете активности. Программное манипулирование этим значением false не влияет на фрагмент.   -  person Saravana Gunaseelan    schedule 20.08.2020
comment
Итак, почему вы используете fitsSystemWindows="true" на уровне активности, когда на самом деле хотите, чтобы он применялся только к определенным фрагментам?   -  person ianhanniballake    schedule 20.08.2020
comment
У меня есть BottomNavigationView в действии, которое должно соответствовать systemWindow. При переходе к полноэкранному фрагменту я скрываю BottomNavigationView.   -  person Saravana Gunaseelan    schedule 20.08.2020
comment
fitsSystemWindows на BottomNavigationView не влияет ли фрагменты fitsSystemWindows.   -  person ianhanniballake    schedule 20.08.2020
comment
У меня есть fitsSystemWindows в основном представлении activity_main. На самом деле, я обнаружил, что мне нужно fitsSystemWindows в действии, потому что я установил тему для MainActivity на <item name="android:windowTranslucentNavigation">true</item>. Мне это больше не нужно. Удаление, которое устранило проблему. Мне больше не нужна активность fitsSystemWindows. По умолчанию все фрагменты теперь помещаются в окно, а для полноэкранного фрагмента простое обновление флагов растягивает его. Спасибо за вашу помощь! Извините, если я потратил ваше время!!   -  person Saravana Gunaseelan    schedule 20.08.2020


Ответы (1)


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

person ianhanniballake    schedule 20.08.2020