Я разрабатываю игру для Android. Он состоит из одного основного действия и нескольких фрагментов, и навигация по ним осуществляется с помощью компонента навигации. У меня есть небольшая проблема, которая сводит меня с ума. Основное действие правильно установлено в полноэкранном режиме, панели состояния и кнопки скрыты правильно, а фоновое изображение, которое я выбрал, отображается полностью в полноэкранном режиме. Говоря о фрагментах, кажется, что их элементы скрыты под строкой состояния или что размер макета не соответствует фактическому размеру экрана. Если я размещу кнопку в самом низу макета, как вы можете видеть на этом скриншоте на самом деле на экране происходит это (обратите внимание, что кнопка обрезана именно там, где панель кнопок должна быть). Я использовал в качестве модели полноэкранный фрагмент, предоставленный в студии Android, и в нем используются следующие флаги.
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
Я также пытался добавить android:fitsSystemWindows="true"
в корневой макет фрагмента, но это не сработало.
EDIT
Проблема каким-то образом вызвана тем, что FragmentContainerView не является полноэкранным. Я попытался установить фон для него вместо его родителя, и изображение было вырезано: скриншот а>
Схема основной деятельности:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/colourful_sound_waves_pattern_phone_wallpaper__1_"
android:theme="@style/ThemeOverlay.LOCAL.FullscreenContainer"
tools:context=".FullscreenActivity"
android:id="@+id/frame_layout">
<FrameLayout
android:id="@+id/fullscreen_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:keepScreenOn="true"
android:fitsSystemWindows="true">
<androidx.fragment.app.FragmentContainerView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
<LinearLayout
android:id="@+id/fullscreen_content_controls"
style="@style/Widget.Theme.LOCAL.ButtonBar.Fullscreen"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="bottom|center_horizontal"
android:orientation="horizontal"
tools:ignore="UselessParent">
</LinearLayout>
</FrameLayout>
</FrameLayout>