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

Android开发:如何修改Toolbar菜单中搜索图标的颜色

修改Toolbar搜索图标颜色的实用方法

我有一个带有菜单的Toolbar,菜单代码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/ic_search"
        android:title="Search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/menu_map"
        android:icon="@drawable/ic_map"
        android:title="Map"
        app:showAsAction="always"/>
</menu>
请问如何修改其中搜索图标的颜色?

嘿,这问题不难解决,给你三种常用的方法,按需选择就行:

方法1:直接在menu布局里给图标加tint

最简单的方式就是在搜索item的android:icon属性下面添加android:tint,指定你想要的颜色。这样只会修改这个搜索图标的颜色,不会影响其他图标。

修改后的menu代码示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/ic_search"
        android:tint="@color/your_target_color" <!-- 这里添加tint属性 -->
        android:title="Search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/menu_map"
        android:icon="@drawable/ic_map"
        android:title="Map"
        app:showAsAction="always"/>
</menu>

注意:把@color/your_target_color换成你项目里已定义的颜色,或者直接用#FF0000这种十六进制颜色值。

方法2:通过主题样式统一设置Toolbar图标颜色

如果你想让整个Toolbar里的所有图标(包括搜索、地图)都用同一个颜色,那可以修改你的App主题样式,这样不用逐个给item加tint。

打开res/values/styles.xml,找到你的App主题,添加actionBarIconColor或者toolbarIconTint属性:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 其他主题属性 -->
    <item name="actionBarIconColor">@color/your_target_color</item>
    <!-- 或者用这个,适配不同版本 -->
    <item name="toolbarIconTint">@color/your_target_color</item>
</style>

这样Toolbar里的所有默认图标都会统一应用这个颜色,省心不少。

方法3:在代码里动态修改颜色

如果需要根据某些条件动态改变搜索图标的颜色,比如夜间模式切换,那可以在Activity或Fragment里通过代码设置:

Kotlin代码示例

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.your_menu_name, menu)
    val searchItem = menu.findItem(R.id.menu_search)
    // 获取搜索图标对应的Drawable
    val searchIcon = searchItem.icon
    // 设置tint颜色
    searchIcon.setTint(ContextCompat.getColor(this, R.color.your_target_color))
    searchItem.icon = searchIcon
    return super.onCreateOptionsMenu(menu)
}

Java代码示例

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.your_menu_name, menu);
    MenuItem searchItem = menu.findItem(R.id.menu_search);
    Drawable searchIcon = searchItem.getIcon();
    searchIcon.setTint(ContextCompat.getColor(this, R.color.your_target_color));
    searchItem.setIcon(searchIcon);
    return super.onCreateOptionsMenu(menu);
}

这样就能在运行时灵活调整图标颜色啦。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:18:47