Как изменить цвет текста заголовка и кнопок без изменения цвета текста меню переполнения текста в новой панели инструментов?
Я использую android.support.v7.widget.Toolbar в моем проекте. По умолчанию в легкой теме у него есть черный значок меню переполнения, черный текст и черный цвет текста переполнения, например (не смотрите на значок навигации - это обычай):
![Default Toolbar look like]()
![enter image description here]()
Но в моем приложении мне нужно, чтобы он был белым.
Я установил 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:
![enter image description here]()
Это выглядит уродливо.
Я даже попробовал установить цвет заголовка программно с помощью
toolbar.setTitleTextColor(getResources.getColor(R.color.white);
но он меняет ТОЛЬКО цвет заголовка и не меняет кнопку меню:
![enter image description here]()
Итак, как я могу изменить цвет для всего на панели инструментов, кроме элементов в меню переполнения действий?
Ответы
Ответ 1
После того, как вы установили цвет текста для Toolbar
, вы можете установить цвет текста в меню со следующим атрибутом:
<item name="actionMenuTextColor">@color/white</item>
Поскольку вы используете AppCompat Toolbar
, пространство имен 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()
, чтобы получить панель по умолчанию, включенную в данную тему. Однако в этом случае второе решение действительно сработало для меня.