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

Android Studio中如何修改系统/底部导航栏按钮的点击波纹效果颜色

修改Android导航栏按钮触摸波纹颜色的方案

方案一:全局修改波纹颜色(简单但影响所有控件)

如果接受整个App的控件波纹颜色统一改为黑色,直接在主题中配置:

  1. 在res/values/colors.xml中定义所需颜色:
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
  1. 修改App主题(路径为res/values/styles.xml或res/values-v27/styles.xml):
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- 设置导航栏背景为白色 -->
    <item name="android:navigationBarColor">@color/white</item>
    <!-- API26+(含测试设备API27)专用:设置导航栏按钮波纹颜色 -->
    <item name="android:navigationBarColorControlHighlight">@color/black</item>
    <!-- 兼容API21-25:全局控件波纹颜色 -->
    <item name="android:colorControlHighlight">@color/black</item>
</style>

方案二:仅修改导航栏按钮波纹(不影响其他控件)

如果只想单独调整导航栏按钮的波纹效果,不改变其他控件的样式,按以下步骤操作:

  1. 创建自定义波纹Drawable资源

    • 针对API21+(含API27),在res/drawable-v21/目录下创建nav_bar_item_ripple.xml:
    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/black"> <!-- 波纹颜色设为黑色 -->
        <item android:id="@android:id/mask">
            <shape android:shape="rectangle">
                <solid android:color="@color/black" />
            </shape>
        </item>
    </ripple>
    
    • 针对API19-20,在res/drawable/目录下创建同名的nav_bar_item_ripple.xml(用传统selector模拟按压效果):
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">
            <shape android:shape="rectangle">
                <solid android:color="@color/black_20" /> <!-- 20%透明度的黑色,模拟波纹效果 -->
            </shape>
        </item>
        <item>
            <color android:color="@android:color/transparent" />
        </item>
    </selector>
    
    • 在res/values/colors.xml中补充颜色定义:
    <color name="black">#FF000000</color>
    <color name="black_20">#33000000</color>
    <color name="white">#FFFFFFFF</color>
    
  2. 配置导航栏按钮样式
    在App主题中指定导航栏按钮使用自定义背景样式:

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- 设置导航栏背景为白色 -->
        <item name="android:navigationBarColor">@color/white</item>
        <!-- 指定导航栏按钮样式 -->
        <item name="android:navigationBarButtonStyle">@style/CustomNavigationBarButton</item>
    </style>
    
    <!-- 自定义导航栏按钮样式 -->
    <style name="CustomNavigationBarButton" parent="@android:style/Widget.Material.Button.NavigationBar">
        <item name="android:background">@drawable/nav_bar_item_ripple</item>
    </style>
    

注意事项

  • 测试设备为API27(Oreo),上述两种方案均可正常生效。
  • 若你指的是Toolbar的导航按钮(而非系统底部导航栏),只需将Toolbar导航按钮的背景设置为自定义波纹Drawable即可,逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:57:19