Цвет текста элемента меню

Как изменить цвет текста в заголовке элемента меню. Я попытался изменить его, как показано ниже.

<style name="Theme.Kanku.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> </style> 

Но он меняет цвет только текста заголовка Action Bar, но не текста меню.

Попробуйте что-то вроде этого:

 <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> 

Я не использовал темы Шерлока. Это работало для 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; } 

Это будет работать динамично каждый раз. В этом случае цвет текста изменяется на белый. Simpy, измените Color.WHITE на Color.whatever-color-you-хотите изменить его на любой цвет, который вы хотите.

Чтобы обновить цвет текста пункта меню, вам необходимо внести изменения в theme.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> 

Вы можете изменить цвет элемента действия, просто следуя строке

 <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> 

Используйте приведенный ниже код, который он работает

 <!-- 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> 

Добавьте следующую строку кода в ваш .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); } } }); }