安卓如何移除或隐藏BottomNavigationView菜单项的图标预留空白空间
核心原因
BottomNavigationView的默认Item布局会固定预留图标展示区域,就算不配置android:icon属性,这块空间也不会自动消失,仅调整组件整体高度无法触发布局内部的间距重算,所以会出现空白。
可落地解决方案
方案1:调整内置属性(最简便)
直接在XML布局中为BottomNavigationView添加以下属性即可消除图标预留空间:<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="48dp" <!-- 可自定义高度 --> app:labelVisibilityMode="labeled" <!-- 强制文字全显示,避免选中才显示的偏移问题 --> app:itemIconSize="0dp" <!-- 把图标尺寸设为0,消除图标占位 --> app:itemPaddingTop="10dp" <!-- 按需调整上下内边距,让文字垂直居中 --> app:itemPaddingBottom="10dp" app:menu="@menu/your_bottom_menu" />菜单文件无需额外修改,正常配置
android:title属性即可,不需要写android:icon。方案2:自定义Item布局(兼容性最好,适合需要自定义文字样式的场景)
先创建自定义Item布局layout/custom_bottom_nav_item.xml:<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text" <!-- 注意id必须是text,组件会自动绑定菜单的title属性 --> android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="14sp" android:textColor="@color/bottom_nav_text_selector" />然后在BottomNavigationView中引用该布局:
<com.google.android.material.bottomnavigation.BottomNavigationView ... app:itemLayout="@layout/custom_bottom_nav_item" />这种方式完全替换了默认的Item布局,不会有任何额外的预留空间,兼容性不受Material组件库版本影响。
注意事项
- 如果使用的Material组件库版本低于1.4.0,
itemIconSize设为0dp可能不生效,可以额外添加app:itemIconTint="@android:color/transparent"属性,配合上下内边距调整即可。 - 不要给菜单文件的item配置
android:icon属性,避免不必要的资源加载。
内容的提问来源于stack exchange,提问作者Aden Kurmanov
相关产品推荐
相关产品推荐

