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

Android BottomNavigationBar:禁用选中标签放大、修改字号及颜色设置

解决BottomNavigationBar选中标签放大、字号及颜色调整问题

嘿,针对你用的com.ashokvarma.bottomnavigation.BottomNavigationBar组件的几个需求,我整理了具体的实现方案,直接通过配置项和代码就能搞定:

1. 禁用选中标签的放大效果

这个库默认选中标签时会触发文字放大,你只需要关闭文字缩放功能就行:

  • 直接在XML布局里加属性:app:bnbEnableTextScale="false"
  • 或者在Java/Kotlin代码里设置:
mainTabBar.enableTextScale(false);

2. 修改选中标签的字号

这个库没有直接的XML属性单独控制选中字号,但有两种灵活的实现方式:

方法一:用自定义样式统一设置

先在res/values/styles.xml里定义选中和未选中的文字样式:

<style name="BottomNavSelectedText">
    <item name="android:textSize">14sp</item> <!-- 这里改选中时的字号 -->
    <item name="android:textColor">@color/colorPrimary</item> <!-- 选中颜色可以和全局配置保持一致 -->
</style>

<style name="BottomNavUnselectedText">
    <item name="android:textSize">12sp</item> <!-- 未选中时的字号 -->
    <item name="android:textColor">@color/gray</item> <!-- 未选中颜色 -->
</style>

然后给每个底部导航项绑定样式:

mainTabBar.addItem(new BottomNavigationItem(R.drawable.ic_home, "首页")
                .setActiveColorResource(R.color.colorPrimary)
                .setInActiveColorResource(R.color.gray)
                .setSelectedTextStyle(R.style.BottomNavSelectedText)
                .setUnSelectedTextStyle(R.style.BottomNavUnselectedText))
        // 继续添加其他导航项...
        .initialise();

方法二:代码动态设置(更灵活)

如果不想写样式,直接在代码里给每个项设置字号:

// 获取所有底部导航项
List<BottomNavigationItem> items = mainTabBar.getAllItems();
for (BottomNavigationItem item : items) {
    // 选中时的字号(单位sp)
    item.setSelectedTextSize(14);
    // 未选中时的字号(单位sp)
    item.setUnSelectedTextSize(12);
}
mainTabBar.initialise();

3. 仅调整标签颜色

你已经在XML里设置了app:bnbActiveColor(选中状态颜色)和app:bnbInactiveColor(未选中状态颜色),这两个属性已经能全局控制标签文字和图标的颜色啦。如果需要给某个单独的标签设置特殊颜色,直接在对应的BottomNavigationItem里用setActiveColorResource()和setInActiveColorResource()单独配置就行。

相关配置项汇总

除了你已经用到的属性,这个库还有这些和文字、缩放相关的实用配置:

  • app:bnbEnableTextScale:控制是否开启选中文字缩放(默认true,设为false就能禁用放大)
  • app:bnbTextSize:全局设置未选中状态的文字大小
  • app:bnbActiveTextSize:全局设置选中状态的文字大小(部分版本支持,建议用上面的自定义样式或代码设置更稳妥)
  • app:bnbActiveColor:全局选中状态的文字+图标颜色
  • app:bnbInactiveColor:全局未选中状态的文字+图标颜色

最后给你一个修改后的XML布局参考(已经加了禁用缩放的属性):

<com.ashokvarma.bottomnavigation.BottomNavigationBar
    android:id="@+id/mainTabBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:animateLayoutChanges="false"
    android:background="@color/white"
    android:splitMotionEvents="false"
    app:bnbActiveColor="@color/colorPrimary"
    app:bnbBackgroundColor="@color/white"
    app:bnbInactiveColor="@color/gray"
    app:bnbMode="mode_fixed"
    app:bnbEnableTextScale="false" <!-- 禁用选中放大效果 -->
    tools:override="true"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:56:50