You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android底部导航栏新增Item后未选中项标题消失问题求助

底部导航栏添加新Item后未选中项标题消失问题

问题现象

为APP底部导航栏添加第4个Item后,所有未选中状态的Item标题全部消失;添加前(3个Item)导航栏显示正常。

添加新Item前的导航菜单XML代码

<item
    android:id="@+id/navigation_lessons"
    android:icon="@drawable/ic_nav_lessons"
    android:title="@string/lessons" />

<item
    android:id="@+id/navigation_simulator"
    android:icon="@drawable/ic_nav_simulator"
    android:title="@string/simulator" />

<item
    android:id="@+id/navigation_quiz"
    android:icon="@drawable/ic_nav_quiz"
    android:title="@string/quiz" />

添加新Item后的导航菜单XML代码

<item
    android:id="@+id/navigation_lessons"
    android:icon="@drawable/ic_nav_lessons"
    android:title="@string/lessons" />

<item
    android:id="@+id/navigation_simulator"
    android:icon="@drawable/ic_nav_simulator"
    android:title="@string/simulator" />

<item
    android:id="@+id/navigation_quiz"
    android:icon="@drawable/ic_nav_quiz"
    android:title="@string/quiz" />

<item
    android:id="@+id/navigation_settings"
    android:icon="@drawable/ic_nav_settings"
    android:title="@string/settings" />

自定义样式与颜色配置

添加新Item前后未修改配置,相关代码如下:

底部导航栏样式代码

<style name="ThemeOverlay.Custom.BottomNavigationView" parent="Widget.MaterialComponents.BottomNavigationView">
    <item name="itemTextColor">@color/bottom_nav_light</item>
    <item name="itemIconTint">@color/bottom_nav_light</item>
    <item name="itemBackground">@color/colorPrimary</item>
</style>

颜色状态列表代码(res/color/bottom_nav_light.xml)

<item android:state_checked="true" android:color="#000000" />
<item android:state_checked="false" android:color="#595959"/>

尝试通过代码修改标题颜色无效果,需明确问题原因及解决方式。

原因分析

这是Material Design BottomNavigationView的默认行为:当导航栏Item数量≥4个时,会自动启用labelVisibilityMode的默认值auto——未选中的Item会隐藏标题,仅显示图标;只有选中的Item才会同时展示图标与标题。

解决方法

要强制所有状态下的Item均显示标题,需将labelVisibilityMode设置为labeled,有两种实现方式:

1. XML布局中直接配置

在BottomNavigationView标签内添加属性:

app:labelVisibilityMode="labeled"

完整布局示例:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    app:menu="@menu/your_bottom_nav_menu"
    app:theme="@style/ThemeOverlay.Custom.BottomNavigationView"
    app:labelVisibilityMode="labeled" />

2. 代码中动态设置

Java实现

BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);

Kotlin实现

val bottomNav = findViewById<BottomNavigationView>(R.id.bottom_navigation)
bottomNav.labelVisibilityMode = LabelVisibilityMode.LABEL_VISIBILITY_LABELED

设置后,无论导航栏Item数量多少,所有状态的Item都会保持标题可见。


内容的提问来源于stack exchange,提问作者Squash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:35:21