我正在尝试动态更改菜单项文本颜色。
我有一个适用于菜单图标的解决方案,它使用如下颜色过滤器:
Drawable drawable = menuItem.getIcon();
if (drawable != null) {
drawable.mutate();
drawable.setColorFilter(new
PorterDuffColorFilter(Color.parseColor(color), PorterDuff.Mode.MULTIPLY));
}
menuItem.setIcon(drawable);
我无法更改菜单项文字的颜色。为了完成这项工作,我使用了以下代码:
SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.parseColor(color)), 0, s.length(), 0);
menuItem.setTitle(s);
“SAVE”的颜色正是我想要改变的。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
试试这个,
在风格中添加此主题。
android:theme="@style/AppTheme"
并将主题应用于工具栏
{{1}}
答案 1 :(得分:0)
添加菜单样式
<style name="optionMenuTextApearance" parent="@style/Theme.Sherlock.Light">
<item name="actionMenuTextColor">@color/white</item>
<item name="android:actionMenuTextColor">@color/white</item>
</style>
在菜单中调用它
<item name="android:itemTextAppearance">@style/optionMenuTextApearance</item>
运行时更改菜单颜色
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean result = super.onPrepareOptionsMenu(menu);
styleMenuButton();
return result;
}
private void styleMenuButton() {
// Find the menu item you want to style
View view = findViewById(R.id.YOUR_MENU_ITEM_ID_HERE);
// Cast to a TextView instance if the menu item was found
if (view != null && view instanceof TextView) {
((TextView) view).setTextColor( Color.BLUE ); // Make text colour blue
}
}
答案 2 :(得分:0)
您应该在菜单项上设置SpannableString。 在构建SpannableString之后添加以下行:
menuItem.setTitle(s);
由于您的menuItem.getTitle()
仅提供用于制作SpannableString的String值,而不是作为菜单项标题的引用。