Как изменить цвет текста заголовка и цвет без изменения цвета текста меню переполнения текста в новой панели инструментов?

Я использую android.support.v7.widget.Toolbar в моем проекте. По умолчанию в легкой теме у него есть черный значок меню переполнения, черный цвет заголовка и черный цвет текста переполнения, например (не смотрите на значок навигации – это обычай):

Панель инструментов по умолчанию выглядит так:Введите описание изображения здесь

Но в моем приложении мне нужно, чтобы оно было белым. Я установил android: textColorPrimary для белого в моих стилях для панели инструментов:

<style name="Widget.My.Toolbar" parent="Widget.AppCompat.Toolbar"> <item name="theme">@style/ThemeOverlay.My.Toolbar</item> </style> <style name="ThemeOverlay.My.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar"> <item name="android:textColorPrimary">@color/white</item> </style> 

Он изменил цвет названия и кнопку меню переполнения, как я и хотел, но он также изменил цвет текста элементов меню owerflow: Введите описание изображения здесь

Это выглядит уродливо. Я даже попробовал установить цвет заголовка программно с помощью

 toolbar.setTitleTextColor(getResources.getColor(R.color.white); 

Но он меняет ТОЛЬКО цвет заголовка, а не кнопку меню изменения: Введите описание изображения здесь

Итак, как я могу изменить цвет для всего на панели инструментов, кроме элементов в меню переполнения действий?

После того, как вы установите цвет текста для Toolbar вы можете установить цвет текста в меню со следующим атрибутом:

 <item name="actionMenuTextColor">@color/white</item> 

Поскольку вы используете Toolbar AppCompat, пространство имен android не должно включаться в атрибут, как показано выше.

Однако, похоже, у людей был смешанный опыт с этим. Вы также можете попробовать использовать атрибут itemTextAppearance :

 <style name="yourTheme" parent="yourThemeParent"> <!-- Rest of your theme --> <item name="android:itemTextAppearance">@style/menuItemColor</item> </style> <style name="menuItemColor"> <item name="android:textColor">@android:color/black</item> </style> 

Я обнаружил, что первое решение сработало для меня, когда я явно включил Toolbar в свой макет, но не, если я использовал getSupportActionBar() чтобы получить панель по умолчанию, включенную в данную тему. Однако в этом случае второе решение действительно работало для меня.