Цвет текста пункта меню "Действие"

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

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

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

Ответ 1

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

<style name="ThemeName" parent="@style/Theme.Sherlock.Light">
    <item name="actionMenuTextColor">@color/white</item>
    <item name="android:actionMenuTextColor">@color/white</item>
</style>

Ответ 2

Я пробовал несколько вещей, но ничего не работало для меня. Наконец это сделал трюк:

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

Ответ 3

Попробовав все это и не работая, я проделал это программно следующим образом:

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-хотите изменить его на любой цвет, который вы хотите.

Ответ 4

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

Ответ 5

это сработало для меня:

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

Ответ 6

Если 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>

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Это работает для меня, спасибо.

Ответ 10

Вы можете установить цвет программно. Надеюсь, это поможет вам.

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);
            }

        }
    });
}