I have a popup menu that appears when the user clicks an image. The code used is:
PopupMenu popupMenu = new PopupMenu(mContext, mImageView);
popupMenu.setOnMenuItemClickListener(MyClass.this);
popupMenu.inflate(R.menu.menu_my_class_options);
popupMenu.show();
The menu has three actions, and I would like that the text in one of them to be colored red (instead of black).
Is that possible?
I've found some answers (e.g., here) that show how to do this with the activity's Options Menu, but they require access to the onCreateOptionsMenu
method...
Thanks in advance.
-- EDIT --
The menu file:
<?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>
You can achieve this by following steps.
In your style.xml--- add the lines
<style name="style" parent="android:Theme.Holo.Light">
<item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceColor</item>
<item name="android:popupMenuStyle">@style/myPopupMenuStyle</item>
</style>
And below code
<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>
Update for single menu item color
For single menu item color you can simply use the below code
@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);
}
I know that this answer is belated, but maybe it will be useful for somebody. Try to use this
<string name="action_delete_shipment"><font fgcolor='#FF1400'>Delete Shipment</font></string>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With