底部导航视图显示不正确

Posted

技术标签:

【中文标题】底部导航视图显示不正确【英文标题】:Bottom Navigation View Is Shown Incorrectly 【发布时间】:2020-02-09 08:07:37 【问题描述】:

我的应用中有一些全屏活动,底部有底部导航视图。当应用上有导航栏时,它看起来很好,如下所示:

当我移除导航栏时,底部导航视图似乎填满了它的位置(而不是粘在布局的底部):

这是我设置android:layout_height="55dp"而不是"wrap_content"时的样子:

这就是我删除navigation bar的方法:

@Override
public void onResume()
    super.onResume();
    View aView = getWindow().getDecorView();
    aView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

这是我活动的 XML 代码:

<FrameLayout
    android:id="@+id/main_activity_fragment_container"
    android:layout_
    android:layout_
    android:layout_weight="1"
    app:layout_constraintBottom_toTopOf="@+id/navigation"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</FrameLayout>

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_
    android:layout_
    android:background="@color/colorPrimary"
    android:backgroundTint="@color/colorPrimary"
    app:itemIconTint="@color/bnv_colors_main_menu"
    app:itemTextColor="@color/bnv_colors_main_menu"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:menu="@menu/navigation_main_menu"
    app:labelVisibilityMode="labeled"
    >

</com.google.android.material.bottomnavigation.BottomNavigationView>

可能是什么问题?

【问题讨论】:

【参考方案1】:

我运行并检查了您的代码。只需在隐藏导航栏时删除“View.SYSTEM_UI_FLAG_LAYOUT_STABLE”标志。它将解决您的问题!我希望你能理解为什么删除这个特定的标志可以解决你的问题:)

【讨论】:

请问为什么这样可以解决问题?我很好奇

以上是关于底部导航视图显示不正确的主要内容,如果未能解决你的问题,请参考以下文章

重新创建应用时,片段与底部导航视图图标不匹配

如何禁用底部导航视图的菜单项?

在滚动上隐藏/显示底部导航视图

底部导航栏的 Oncreate 视图问题

转到不在底部导航视图内的片段并返回后,底部导航视图不起作用

如何使 UINavigationController 的导航栏显示在底部?