我有一个用户单击图像时出现的弹出菜单.使用的代码是:
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)
您可以通过以下步骤实现此目的.
在你的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)
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |