我在用户点击图片时会显示一个弹出菜单。使用的代码是:
PopupMenu popupMenu = new PopupMenu(mContext, mImageView);
popupMenu.setOnMenuItemClickListener(MyClass.this);
popupMenu.inflate(R.menu.menu_my_class_options);
popupMenu.show();
菜单有三个动作,我希望其中一个文本的颜色为红色(而不是黑色)。
这可能吗? 我找到了一些答案(例如,here),说明如何使用活动的选项菜单执行此操作,但是他们需要访问{{1}方法......
提前致谢。
- 编辑 -
菜单文件:
onCreateOptionsMenu
答案 0 :(得分: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>
以下代码
<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>
单个菜单项颜色的更新
对于单一菜单项颜色,您只需使用以下代码
即可@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);
}
答案 1 :(得分:2)
我知道这个答案是迟来的,但也许对某些人有用。尝试使用此
<string name="action_delete_shipment"><font fgcolor='#FF1400'>Delete Shipment</font></string>
答案 2 :(得分:0)
根据@Shadik Khan的回答,实际上,您只需要创建SpannableString,更改颜色或将其放入菜单列表之前就可以更改颜色。像下面一样
if (messageActionMap.keyAt(i) == LIST_ITEM_DELETE) {
SpannableString itemRecall = new SpannableString(messageActionMap.valueAt(i));
itemRecall.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.red)), 0, itemRecall.length(), 0);
mMessagePopupMenu.getMenu().add(Menu.NONE, messageActionMap.keyAt(i), 1, itemRecall);
}