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

如何移除Android底部导航栏中点击按钮的透明背景

问题:如何移除BottomNavigationView按钮的透明白色背景?

底部导航栏效果

我实现了如下样式的底部导航栏:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="32dp"
    android:layout_marginRight="32dp"
    android:layout_marginBottom="24dp"
    android:background="@drawable/drw_bottom_navigation_background"
    app:elevation="0dp"
    app:itemIconSize="100dp"
    app:itemRippleColor="@android:color/transparent"
    app:itemTextColor="@android:color/transparent"
    app:itemIconTint="@drawable/bottom_navigation_color_selector"
    app:labelVisibilityMode="unlabeled"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/bottom_navigation_menu"
    app:itemBackground="@android:color/transparent"
/>

对应的菜单代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/profileFragment"
        android:icon="@drawable/profile_menu"
        android:title="@null"/>

    <item
        android:id="@+id/requestsFragment"
        android:icon="@drawable/requests_menu"
        android:title="@null"/>

    <item
        android:id="@+id/homeFragment"
        android:icon="@drawable/home_menu"
        android:title="@null" />
</menu>

以及itemIconTint的代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_checked="true" />
    <item android:color="@color/Primary200" />
</selector>

请问如何移除按钮上的这个透明白色背景?


这个透明白色背景是BottomNavigationView选中Item时的默认背景,可通过以下几种方式移除:

方法一:自定义Item背景选择器

创建一个新的Drawable文件(例如bottom_nav_item_bg.xml),将选中和未选中状态的背景都设为透明:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/transparent" android:state_checked="true" />
    <item android:drawable="@android:color/transparent" />
</selector>

然后在BottomNavigationView的布局属性中替换原有的itemBackground配置:

app:itemBackground="@drawable/bottom_nav_item_bg"

方法二:通过主题覆盖默认样式

在styles.xml中定义一个自定义主题,直接取消Item的背景和波纹效果:

<style name="NoBgBottomNav" parent="Widget.MaterialComponents.BottomNavigationView">
    <item name="itemBackground">@android:color/transparent</item>
    <item name="itemRippleColor">@android:color/transparent</item>
</style>

接着给BottomNavigationView应用这个主题:

android:theme="@style/NoBgBottomNav"

方法三:检查图标资源

如果上述方法无效,可确认下菜单中使用的图标(profile_menu、requests_menu等)本身是否带有透明白色背景,若有则替换为纯透明背景的图标即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:36:04