TabLayout 加载 Fragments 但其 BottomNavigationView 未显示在底部

Posted

技术标签:

【中文标题】TabLayout 加载 Fragments 但其 BottomNavigationView 未显示在底部【英文标题】:TabLayout load Fragments but its BottomNavigationView not showing on bottom 【发布时间】:2018-05-07 15:15:16 【问题描述】:

TabLayout 调用并加载 Fragments。片段预览没问题,everythink ok。加载片段后问题开始。 底部导航视图

android:layout_alignParentBottom="true"

不显示在底部。但是把位置换到top没有问题,就是show。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:id="@+id/container"
    android:layout_
    android:layout_>

    <TextView
        android:id="@+id/message"
        android:layout_
        android:layout_
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginStart="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:text="@string/yazarlar"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_
        android:layout_
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/navigation" />

</android.support.constraint.ConstraintLayout>

【问题讨论】:

在您的问题被否决之前,请包含您的整个布局 XML 文件,如果没有它,我们将无法帮助您。 请发布您的 XML 布局 【参考方案1】:

实际上,我在您的代码中没有看到类似

的内容
android:layout_alignParentBottom="true"

也就是说,在您之前的代码中,您使用 RelativeLayout 作为父级,所以请发布您的原始代码。我建议你使用这样的东西:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_
        android:layout_
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/navigation" />

【讨论】:

【参考方案2】:

插入此代码android:layout_alignParentBottom="true" 未显示在片段中。我尝试一些布局。原始布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_
    android:layout_>

    <TextView
        android:id="@+id/message"
        android:layout_
        android:layout_
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginStart="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:text="@string/yazarlar"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_
        android:layout_
        android:background="?android:attr/windowBackground"
        android:layout_alignParentBottom="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/navigation" />
</RelativeLayout>

【讨论】:

以上是关于TabLayout 加载 Fragments 但其 BottomNavigationView 未显示在底部的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中以编程方式创建 TabLayout

如何使用 TabLayout 将数据从 Activity 传递到 Fragment

响应Activity中的ViewPager2 Fragments事件

TabLayout - 如何仅在选项卡上加载片段

安卓中viewpager+tablayout+fragment懒加载怎么做

停止 Android TabLayout 自动加载下一页