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

Android开发:如何仅修改Toolbar中单个菜单项的文字颜色

嘿,要给Toolbar里单个菜单项改文字颜色是吧?这有几个实用的方法,看你需求挑就行:

方法1:自定义菜单项布局(最灵活可控)

这种方式能完全自定义单个项的样式,不仅是文字颜色,大小、间距甚至加个小图标都能搞定。

步骤很简单:

  • 先写个自定义布局文件,比如layout/menu_item_colored.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:textColor="#FF4081" <!-- 这里替换成你要的颜色值 -->
    android:textSize="16sp"
    android:gravity="center"
    android:paddingHorizontal="16dp"/>
  • 回到你的菜单XML,给目标菜单项加上app:actionLayout属性,指向这个自定义布局:
<item
    android:id="@+id/nb_invalid"
    android:title="0"
    app:showAsAction="always"
    app:actionLayout="@layout/menu_item_colored"/>
  • 如果需要动态更新文字,在Activity/Fragment的onCreateOptionsMenu里找到布局里的TextView:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.your_menu_file, menu);
    // 获取目标菜单项的自定义布局
    MenuItem invalidItem = menu.findItem(R.id.nb_invalid);
    TextView coloredText = invalidItem.getActionView().findViewById(android.R.id.text1);
    coloredText.setText("3"); // 动态修改文字内容
    return true;
}
方法2:用SpannableString动态着色(无需额外布局)

要是不想搞自定义布局,直接在代码里给文字加颜色也很方便,适合只改颜色的场景。

在onPrepareOptionsMenu里处理(这里用这个方法是因为它每次菜单显示前都会触发,动态更新更稳妥):

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    MenuItem targetItem = menu.findItem(R.id.nb_invalid);
    // 创建带颜色的 SpannableString
    SpannableString coloredTitle = new SpannableString(targetItem.getTitle());
    // 设置文字颜色,这里用红色示例
    coloredTitle.setSpan(new ForegroundColorSpan(Color.RED), 0, coloredTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    targetItem.setTitle(coloredTitle);
    return true;
}

注意:如果菜单项的文字会动态变化,每次更新后都要重新设置一遍这个SpannableString哦。

方法3:直接在菜单XML里设置textColor(兼容性需注意)

部分场景下,你可以直接给目标item加android:textColor属性,但这个方法在自定义Toolbar样式或者低版本系统里可能不生效,所以优先级低于前两种:

<item
    android:id="@+id/nb_invalid"
    android:title="0"
    android:textColor="#FF0000"
    app:showAsAction="always"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:26