Подтвердить что ты не робот

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

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

Default Toolbar look likeenter 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

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

4b9b3361

Ответ 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(), чтобы получить панель по умолчанию, включенную в данную тему. Однако в этом случае второе решение действительно сработало для меня.