Почему размер фрагмента не распространяется на размер экрана?

#android #android-studio #android-fragments #android-bottomnav

Вопрос:

Я создал новое действие нижней навигации с помощью мастера Android studio. Проблема, по-видимому, заключается в макете activity_main. Представление фрагмента не распространяется на верхнюю часть экрана, вместо этого оно закрыто нижней панелью навигации. введите описание изображения здесь

Что бы я ни делал, я не могу сдвинуть это с мертвой точки.

Это XML — код:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@ id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">

   <com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@ id/nav_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="0dp"
    android:layout_marginEnd="0dp"
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/bottom_nav_menu" />

<fragment
    android:id="@ id/nav_host_fragment_activity_main"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:layout_constraintBottom_toTopOf="@id/nav_view"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/mobile_navigation" />

</androidx.constraintlayout.widget.ConstraintLayout>
 

Комментарии:

1. Поделитесь своим xml-кодом

2. @Sniffer Это всего лишь XML-код по умолчанию, созданный Android studio, но вот он

Ответ №1:

Удалите нижеприведенное заполнение из корневого макета:

 android:paddingTop="?attr/actionBarSize"
 

Комментарии:

1. почему мастер Android studio добавил это?

2. Это странно для меня, но, вероятно, потому, что заполнение равно actionBarSize , я думаю, они считают, что вы могли бы реализовать обычай toolBar как actionBar в этом пространстве

3.Возможно, мастер просматривает вашу тему, определенную в AndroidManifest.xml <application> теге. Если вы используете .NoActionBar тему, она, вероятно, не добавит эту строку. Но это всего лишь дикое предположение….

Ответ №2:

Вам нужно установить

  android:layout_width="0dp"
 android:layout_height="0dp"
 

чтобы переключиться с «нормального размера» на «применить размер ограничения»

Комментарии:

1. Панель навигации и Фрагмент больше не перекрываются, но пространство вверху остается.