Ответ 1
Попробуйте что-то вроде этого:
<style name="ThemeName" parent="@style/Theme.Sherlock.Light">
<item name="actionMenuTextColor">@color/white</item>
<item name="android:actionMenuTextColor">@color/white</item>
</style>
Как изменить цвет текста в заголовке элемента меню. Я попытался изменить его, как показано ниже.
<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-хотите изменить его на любой цвет, который вы хотите.
Чтобы обновить цвет текста пункта меню, вам необходимо внести изменения в 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>
это сработало для меня:
<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);
}
}
});
}