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

如何在Android Studio中禁用或自定义BottomNavigationView的阴影效果

解决BottomNavigationView阴影无法禁用的问题

Material Design的BottomNavigationView默认自带阴影效果,仅设置android:elevation="0dp"往往不生效——因为组件内部通过自身属性或主题样式控制阴影,以下是几种可靠的解决方法:

方法1:设置Material专属的elevation属性

直接在布局XML中添加app:elevation="0dp",覆盖组件默认的阴影高度:

<com.google.android.material.bottomnavigation.BottomNavigationView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/footer_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:itemIconTint="@color/selector_footer"
    app:labelVisibilityMode="unlabeled"
    android:background="@color/white"
    app:menu="@menu/footer_menu"
    app:itemIconSize="32dp"
    app:elevation="0dp" /> <!-- 新增这行 -->

方法2:将阴影颜色设为透明

如果方法1仍有残留阴影,可通过app:shadowColor强制将阴影设为透明:

app:shadowColor="@android:color/transparent"

方法3:通过自定义样式全局控制

若需要统一调整所有BottomNavigationView的阴影,可在styles.xml中定义自定义样式:

<style name="NoShadowBottomNav" parent="Widget.MaterialComponents.BottomNavigationView">
    <item name="elevation">0dp</item>
    <item name="shadowColor">@android:color/transparent</item>
</style>

然后在布局中引用该样式:

style="@style/NoShadowBottomNav"

方法4:动态代码控制

如果需要在运行时切换阴影状态,可在代码中调用以下方法:

BottomNavigationView bottomNav = findViewById(R.id.footer_menu);
bottomNav.setElevation(0f);
// 或直接设置阴影颜色
bottomNav.setShadowColor(Color.TRANSPARENT);

注意事项

  • 确保你的Material Components库是最新稳定版,旧版本可能存在属性不生效的bug。
  • 检查父布局是否自带阴影,排除其他视图的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:37:23