操作栏菜单项文字颜色
如何更改菜单项标题的文本颜色。 我试图改变它如下
<style name="Theme.Kanku.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> </style>
但它只改变操作栏标题文本的颜色,而不改变菜单项文本。
尝试这样的事情:
<style name="ThemeName" parent="@style/Theme.Sherlock.Light"> <item name="actionMenuTextColor">@color/white</item> <item name="android:actionMenuTextColor">@color/white</item> </style>
我尝试了几件事,但没有为我工作。 最后这个窍门是:
<style name="your_theme" parent="your_parent"> <item name="android:itemTextAppearance">@style/TextAppearance</item> </style> <style name="TextAppearance"> <item name="android:textColor">@android:color/black</item> </style>
我没有使用Sherlock主题。 这为Holo.Light.DarkActionBar工作。
尝试所有这些,并让他们不工作,我这样去编程:
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.changeip_card_menu, menu); for(int i = 0; i < menu.size(); i++) { MenuItem item = menu.getItem(i); SpannableString spanString = new SpannableString(menu.getItem(i).getTitle().toString()); spanString.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spanString.length(), 0); //fix the color to white item.setTitle(spanString); } return true; }
这将每次dynamic工作。 在这种情况下,文本颜色变为白色。 简单地说,把Color.WHITE改成Color.whatever-color-you-想把它改成你想要的任何颜色。
要更新菜单项文本颜色,您需要在themes.xml中进行更改。 下面的答案是sherlock.actionbar。 在您的themes.xml文件中添加以下行:
<style name="Theme.Mytheme" parent="@style/Theme.Sherlock"> <item name="actionMenuTextColor">@color/mycolor</item> <item name="android:actionMenuTextColor">@color/mycolor</item> </style>
这对我工作:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="android:textAppearanceLargePopupMenu">@style/MyOverflowItemCollor</item> </style> <style name="MyOverflowItemCollor" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large"> <item name="android:textColor">#ffffff</item> </style>
如果AppTheme是android:Theme.Holo.Light.DarkActionBar,那么您需要设置自定义的actionBarWidgetTheme以获得更改的操作菜单样式。 喜欢这个:
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item> <item name="android:actionMenuTextColor">@color/{custom_menu_item_text_color}</item> </style> <style name="MenuItemText"> <item name="android:textColor">@color/{custom_menu_item_text_color}</item> </style> <style name="ActionBarWidget" parent="@android:style/Theme.Holo"> <item name="android:itemTextAppearance">@style/MenuItemText</item> </style>
请使用下面的代码工作
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorWhite</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimaryDark</item> <item name="android:actionMenuTextColor">@color/colorWhite</item> </style>
你可以简单地通过下面的行改变行动项目的颜色
<item name="android:actionMenuTextColor">@color/selected_text_color</item>
你可以这样申请
<style name="your_theme" parent="your_parent"> <item name="android:actionMenuTextColor">@color/selected_text_color</item> </style>
在我的情况
<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionMenuTextColor">@color/selected_text_color</item> </style>
将以下代码行添加到样式 .xml文件中,该文件将选项菜单文本颜色更改为黑色 :
<style name="optionMenuTextApearance" parent="@android:style/TextAppearance.Widget.IconMenu.Item"> <item name="android:textColor">@color/colorBlack</item> </style>
然后将这一行代码添加到您的主题中,以更改选项菜单文本的颜色:
<item name="android:itemTextAppearance">@style/optionMenuTextApearance</item>
它适用于我,谢谢。
您可以以编程方式设置颜色。 希望它能帮助你。
private static void setMenuTextColor(final Context context, final Toolbar toolbar, final int menuResId, final int colorRes) { toolbar.post(new Runnable() { @Override public void run() { View settingsMenuItem = toolbar.findViewById(menuResId); if (settingsMenuItem instanceof TextView) { if (DEBUG) { Log.i(TAG, "setMenuTextColor textview"); } TextView tv = (TextView) settingsMenuItem; tv.setTextColor(ContextCompat.getColor(context, colorRes)); } else { // you can ignore this branch, because usually there is not the situation Menu menu = toolbar.getMenu(); MenuItem item = menu.findItem(menuResId); SpannableString s = new SpannableString(item.getTitle()); s.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, colorRes)), 0, s.length(), 0); item.setTitle(s); } } }); }