#android #android-constraintlayout #android-bottomnavigationview
#Android #android-constraintlayout #android-bottomnavigationview
Вопрос:
Поэтому я недавно перешел на макеты ограничений, но я не могу разобраться в этом. Итак, вот мой код:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".dashboard.DashboardActivity">
<FrameLayout
android:id="@ id/dashboard_framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@ id/dashboard_bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/dashboard_framelayout"
app:menu="@menu/menu_dashboard_bottom_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
Итак, что я делаю не так в своем коде? Я установил ограничение BottomNavigationView на parent, но каким-то образом оно отодвигается дальше вниз, и я понятия не имею, как это исправить.
Ответ №1:
Поскольку FrameLayout является родительским, и вы предоставляете навигацию сверху вниз к нижней части макета фрейма, и именно поэтому он снижался.
Удалите эту строку
app:layout_constraintTop_toBottomOf="@id/dashboard_framelayout"
Ответ №2:
Это действительно работает, но ваша нижняя навигация будет перекрывать FrameLayout. Если это то, что вы хотите, тогда хорошо. Если вы не хотите, чтобы он накладывался, выполните следующие действия:
В FrameLayout измените layout_height=0dp
, чтобы соответствовать ограничениям. Также добавьте следующее ограничение: app:layout_constraintBottom_toTopOf="@id/dashboard_bottom_navigation
В BottomNavigationView вам не нужно ничего делать. Вы можете оставить верхнее ограничение (которое будет связывать два представления) или удалить его. В любом случае, если вы скроете NavView, FrameLayout расширится, чтобы заполнить экран, и уменьшится при отображении NavView.
Комментарии:
1. Спасибо, что думали вместе и даже дальше, не думали об этом сценарии tbh: D спасибо!