Проблема рендеринга BottomNavigationView с ConstraintLayout - PullRequest
0 голосов
/ 23 сентября 2019

Я реализовал дизайн приложения с несколькими фрагментами для одного действия. У меня есть макет ограничения в качестве корня действия, а в компоновке фрейма размещены все фрагменты в моем приложении. У меня также есть представление навигации снизу (от com.google.android.material.bottomnavigation.BottomNavigationView).Я хочу иметь вид навигации снизу со всем пользовательским интерфейсом моего фрагмента.

Проблема : У меня проблема с отображением вида навигации снизу. Он не прилипает к нижней части родительского элемента, он просто плавает в макете. Ограничения, которые я применил к нижнему навигационному окну, похоже, не работают должным образом или, возможно, я их не правильно использую.

Наблюдения : я пробовал некоторые конфигурациичтобы понять проблему. Я применил цвет фона к макету ограничения (черный), цвет акцента в приложении к макету кадра и заметил, что ограничения для нижнего вида навигации не были применены правильно.Когда я запустил приложение, «Нижнее навигационное представление» плавает, а затем следует ограничениям и работает должным образом, но когда я приостановил действие и затем после возобновления действия, «Нижнее навигационное представление» не соответствует ограничениям.

<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black"
    tools:context=".module.MainView">

    <FrameLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_0dp"
        android:layout_above="@id/bottom_navigation"
        android:background="@color/colorAccent"
        android:padding="@dimen/_1dp"
        app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="@dimen/_0dp"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        app:itemIconTint="@color/colorNavIcon"
        app:itemTextColor="@color/colorNavText"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/wkd_menu" />

</androidx.constraintlayout.widget.ConstraintLayout>

Схема начала деятельности:

enter image description here

Схема возобновления деятельности:

enter image description here

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

1 Ответ

0 голосов
/ 24 сентября 2019

Ваше ограничение по-прежнему корректно, так как вы задаете все ограничения для ширины и высоты структуры кадра с 0dp, как показано ниже.

 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black">

    <FrameLayout
        android:id="@+id/main_container"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/colorAccent"
        android:padding="1dp"
        app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        app:itemIconTint="@color/colorPrimary"
        app:itemTextColor="@color/color_got_it"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/menu_profile" />

</androidx.constraintlayout.widget.ConstraintLayout>
...