更改PopupMenu中单个项目的文本颜色

Fil*_*mos 6 android popupmenu

我有一个用户单击图像时出现的弹出菜单.使用的代码是:

PopupMenu popupMenu = new PopupMenu(mContext, mImageView);
popupMenu.setOnMenuItemClickListener(MyClass.this);
popupMenu.inflate(R.menu.menu_my_class_options);
popupMenu.show();
Run Code Online (Sandbox Code Playgroud)

菜单有三个动作,我希望其中一个文本的颜色为红色(而不是黑色).

那可能吗?我已经找到了一些答案(例如,这里),显示如何使用活动的选项菜单执行此操作,但他们需要访问该onCreateOptionsMenu方法...

提前致谢.

- 编辑 -

菜单文件:

<?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/item_edit"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_edit_address"
        android:visible="true"/>
    <item
        android:id="@+id/item_retake_photo"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_retake_photo"
        android:visible="true"/>
    <item
        android:id="@+id/item_delete"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_delete_shipment"
        android:visible="true"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

Sad*_*diq 7

您可以通过以下步骤实现此目的.

在你的style.xml中---添加行

<style name="style" parent="android:Theme.Holo.Light"> 
    <item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceColor</item>
    <item name="android:popupMenuStyle">@style/myPopupMenuStyle</item>

</style>
Run Code Online (Sandbox Code Playgroud)

并在代码下面

<style name="myPopupMenuStyle" parent="@style/Widget.AppCompat.Light.PopupMenu">

</style>
<style name="myPopupMenuTextAppearanceColor" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
    <item name="android:textColor">#000000(Your Color Code)</item>
</style>
Run Code Online (Sandbox Code Playgroud)

更新单个菜单项颜色

对于单个菜单项颜色,您只需使用以下代码即可

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.your_menu, menu);

    int positionOfMenuItem = 0; 
// 0 or whatever your item position at which you want to change the color...
    MenuItem item = menu.getItem(positionOfMenuItem);
    SpannableString s = new SpannableString("My red MenuItem");
    s.setSpan(new ForegroundColorSpan(Color.RED//your color), 0, s.length(), 0);
    item.setTitle(s);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我知道这个答案是迟到的,但也许它对某人有用。尝试使用这个

<string name="action_delete_shipment"><font fgcolor='#FF1400'>Delete Shipment</font></string>
Run Code Online (Sandbox Code Playgroud)