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

安卓如何移除或隐藏BottomNavigationView菜单项的图标预留空白空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:06:04