Android 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
相关产品推荐
相关产品推荐

