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

119

Я использую новую панель инструментов v7 и, хоть убей, не могу понять, как изменить цвет заголовка. Я установил для @style панели инструментов стиль, объявленный в styles.xml, и применил titleTextStyle с textColor. Я что-то упускаю? Я кодирую Lollipop, но сейчас тестирую на устройстве Kitkat.

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="ActionBar" parent="Theme.AppCompat">
        <item name="android:background">@color/actionbar_background</item>
        <item name="android:titleTextStyle">@style/ActionBar.TitleTextStyle</item>
    </style>

    <style name="ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/actionbar_title_text</item>
    </style>

</resources>

actionbar.xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar_actionbar"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    style="@style/ActionBar"/>
Деннис
источник

Ответы:

241

Вариант 1) Быстрый и простой способ (только панель инструментов)

Начиная с appcompat-v7-r23, вы можете использовать следующие атрибуты непосредственно в Toolbarсвоем стиле:

app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"

Если ваш минимальный SDK - 23 и вы используете собственный, Toolbarпросто измените префикс пространства имен на android.

В Java вы можете использовать следующие методы:

toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);

Эти методы принимают цвет int, а не идентификатор цветового ресурса!

Вариант 2) Переопределить стиль и атрибуты темы панели инструментов

макет / xxx.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.MyApp.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    style="@style/Widget.MyApp.Toolbar.Solid"/>

Значения / styles.xml

<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/actionbar_color</item>
    <item name="android:elevation" tools:ignore="NewApi">4dp</item>
    <item name="titleTextAppearance">...</item>
</style>

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <!-- Parent theme sets colorControlNormal to textColorPrimary. -->
    <item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>

Помогите! Мои значки тоже изменили цвет!

@PeterKnut сообщил, что это влияет на цвет кнопки переполнения, кнопки панели навигации и кнопки возврата. Он также меняет цвет текста SearchView.

Относительно цвета значков: colorControlNormalнаследуется от

  • android:textColorPrimary для темных тем (белое на черном)
  • android:textColorSecondary для светлых тем (черный на белом)

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

<item name="colorControlNormal">#de000000</item>

В appcompat-v7 до r23 была ошибка, из-за которой вы также должны были переопределить собственный аналог следующим образом:

<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>

Помогите! Мой SearchView - беспорядок!

Примечание: возможно, этот раздел устарел.

Поскольку вы используете виджет поиска, который по какой-то причине использует другую стрелку назад (не визуально, технически), чем та, которая включена в appcompat-v7, вам необходимо установить ее вручную в теме приложения . Чертежи библиотеки поддержки окрашиваются правильно. В противном случае он всегда был бы белым.

<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

Что касается текста в режиме поиска ... простого способа нет. Покопавшись в его источнике, я нашел способ перейти к текстовому представлению. Я не тестировал это, поэтому, пожалуйста, дайте мне знать в комментариях, если это не сработало.

SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color

Бонус: переопределение стиля и атрибутов темы ActionBar

Соответствующий стиль для панели действий по умолчанию appcompat-v7 будет выглядеть следующим образом:

<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="background">@color/actionbar_color</item> <!-- No prefix. -->
    <item name="elevation">4dp</item> <!-- No prefix. -->
    <item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>

<style name="Theme.MyApp" parent="Theme.AppCompat">
    <item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
    <item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
Евгений Печанец
источник
2
Этот раствор имеет различные побочные эффекты. textColorPrimary применяется также к кнопке панели навигации и тексту в виджете поиска. Более того, цвет кнопки возврата установлен на белый (не спрашивайте почему).
Питер Кнут
@PeterKnut В то время я не осознавал, насколько неполным было предложенное решение. После редактирования - вот как я его использую и работает. Однако просмотрите фрагмент цвета текста в режиме поиска, пожалуйста.
Eugen Pechanec
Теперь работает почти правильно. Два примечания: копать текст в виджете поиска - не лучшая идея, его идентификатор может быть изменен в будущем. Свойство Background в Widget.MyApp.ActionBar также влияет на фон в кнопках и всплывающих подсказках. Фон должен быть установлен непосредственно в <android.support.v7.widget.Toolbar>.
Питер Кнут
Я согласен, это не очень хорошая идея, я бы хотя бы добавил туда нулевую проверку (однако каковы шансы того, что этот идентификатор изменится). Что касается фона: вы не правы, если вы добавите его в качестве стиля к элементу панели инструментов, фон будет применяться только к виджету панели инструментов. Если бы вы определили фон в ThemeOverlayи использовали его как тему , то фон каждого дочернего элемента также стал бы цветным.
Eugen Pechanec
Хорошо, вы правы в выборе стиля и темы. Моя ошибка.
Питер Кнут
40

Вот мое решение, если вам нужно изменить только цвет заголовка, а не цвет текста в виджете поиска.

макет / toolbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:background="@color/toolbar_bg"
    app:theme="@style/AppTheme.Toolbar"
    app:titleTextAppearance="@style/AppTheme.Toolbar.Title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"/>

Значения / themes.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
    </style>

    <style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
        <!-- Customize color of navigation drawer icon and back arrow --> 
        <item name="colorControlNormal">@color/toolbar_icon</item>
    </style>

    <style name="AppTheme.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
        <!-- Set proper title size -->
        <item name="android:textSize">@dimen/abc_text_size_title_material_toolbar</item>
        <!-- Set title color -->
        <item name="android:textColor">@color/toolbar_title</item>
    </style>
</resources>

Аналогичным образом вы можете установить также subtitleTextAppearance.

Питер Кнут
источник
У меня возникла проблема, когда цвет заголовка отличался бы в зависимости от того, существовала ли панель инструментов во фрагменте или в действии. Использование этой уловки для переопределения цвета было единственным исправлением, которое я смог найти (другие способы изменить цвет не работали). Надеюсь, это поможет большему количеству людей. Спасибо!
Педро Лоурейро
3
@Peter Knut, вам нужно указать, что это работает только для API21 и выше, что делает его бесполезным
DoruChidean
@DoruChidean протестирован с Jelly Bean (API 16): он работает как шарм!
crubio
Невозможно установить тему для деятельности. IE, <activity android: name = ". SomeActivity" android: theme = "@ style / AppTheme.Toolbar"
lostintranslation
11

Если вы поддерживаете API 23 и выше, теперь вы можете использовать атрибут titleTextColor. для установки цвета заголовка панели инструментов.

макет / toolbar.xml

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:titleTextColor="@color/colorPrimary"
        />

MyActivity.java

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar)
toolbar.setTitleTextColor(Color.WHITE);
fractalwrench
источник
Похоже, они также поддерживаются библиотекой appcompat.
Eugen Pechanec
10

Настройка у app:titleTextColorменя android.support.v7.widget.Toolbarработает на Android 4.4 и 6.0 тоже с com.android.support:appcompat-v7:23.1.0:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:titleTextColor="@android:color/white" />
hunyadym
источник
4
Обратите внимание, что пространство имен - это приложение, а не android.
Tommie
простое добавление этой строки app: titleTextColor = "@ android: color / white" также работало для меня в kitkat и выше. Спасибо @hunyadym
Ghanshyam Nayma
9

Это меня некоторое время раздражало, и мне не нравился ни один из полученных ответов, поэтому я взглянул на источник, чтобы увидеть, как это работает.

FractalWrench находится на правильном пути, но его можно использовать ниже API 23, и его необязательно устанавливать на панели инструментов.

Как говорили другие, вы можете установить стиль на панели инструментов с помощью

app:theme="@style/ActionBar"

и в этом стиле вы можете установить цвет текста заголовка с помощью

<item name="titleTextColor">#00f</item>

для pre API 23 или для 23+

<item name="android:titleTextColor">your colour</item>

Полный xml

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    app:theme="@style/ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/>


<style name="ActionBar" parent="@style/ThemeOverlay.AppCompat.ActionBar">
    <item name="android:titleTextStyle">@style/ActionBarTextStyle</item>
    <item name="titleTextColor">your colour</item>
    <item name="android:background">#ff9900</item>
</style>

Вот все атрибуты, которые можно установить для панели инструментов

<declare-styleable name="Toolbar">
    <attr name="titleTextAppearance" format="reference" />
    <attr name="subtitleTextAppearance" format="reference" />
    <attr name="title" />
    <attr name="subtitle" />
    <attr name="gravity" />
    <attr name="titleMargins" format="dimension" />
    <attr name="titleMarginStart" format="dimension" />
    <attr name="titleMarginEnd" format="dimension" />
    <attr name="titleMarginTop" format="dimension" />
    <attr name="titleMarginBottom" format="dimension" />
    <attr name="contentInsetStart" />
    <attr name="contentInsetEnd" />
    <attr name="contentInsetLeft" />
    <attr name="contentInsetRight" />
    <attr name="maxButtonHeight" format="dimension" />
    <attr name="navigationButtonStyle" format="reference" />
    <attr name="buttonGravity">
        <!-- Push object to the top of its container, not changing its size. -->
        <flag name="top" value="0x30" />
        <!-- Push object to the bottom of its container, not changing its size. -->
        <flag name="bottom" value="0x50" />
    </attr>
    <!-- Icon drawable to use for the collapse button. -->
    <attr name="collapseIcon" format="reference" />
    <!-- Text to set as the content description for the collapse button. -->
    <attr name="collapseContentDescription" format="string" />
    <!-- Reference to a theme that should be used to inflate popups
         shown by widgets in the toolbar. -->
    <attr name="popupTheme" format="reference" />
    <!-- Icon drawable to use for the navigation button located at
         the start of the toolbar. -->
    <attr name="navigationIcon" format="reference" />
    <!-- Text to set as the content description for the navigation button
         located at the start of the toolbar. -->
    <attr name="navigationContentDescription" format="string" />
    <!-- Drawable to set as the logo that appears at the starting side of
         the Toolbar, just after the navigation button. -->
    <attr name="logo" />
    <!-- A content description string to describe the appearance of the
         associated logo image. -->
    <attr name="logoDescription" format="string" />
    <!-- A color to apply to the title string. -->
    <attr name="titleTextColor" format="color" />
    <!-- A color to apply to the subtitle string. -->
    <attr name="subtitleTextColor" format="color" />
</declare-styleable>
Stimsoni
источник
4

Самый простой способ изменить Toolbarцвет заголовка с помощью inCollapsingToolbarLayout .

Добавьте стили ниже в CollapsingToolbarLayout

<android.support.design.widget.CollapsingToolbarLayout
        app:collapsedTitleTextAppearance="@style/CollapsedAppBar"
        app:expandedTitleTextAppearance="@style/ExpandedAppBar">

styles.xml

<style name="ExpandedAppBar" parent="@android:style/TextAppearance">
        <item name="android:textSize">24sp</item>
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>

    <style name="CollapsedAppBar" parent="@android:style/TextAppearance">
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>
Порас Бхардвадж
источник
3

Если вы можете использовать appcompat-v7 app: titleTextColor = "# fff">

<android.support.v7.widget.Toolbar  
        android:id="@+id/toolbar"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:background="@color/colorPrimary"   
        android:visibility="gone"   
        app:titleTextColor="#fff">   
    </android.support.v7.widget.Toolbar>   
Сурендер Кумар
источник
2

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

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:navigationIcon="@drawable/ic_back"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:subtitleTextColor="@color/white"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:title="This week stats"
    app:titleTextColor="@color/white">


    <ImageView
        android:id="@+id/submitEditNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:src="@android:drawable/ic_menu_manage" />
</android.support.v7.widget.Toolbar>
Хитеш Саху
источник
2

Создайте панель инструментов в своем xml ... toolbar.xml:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"

    </android.support.v7.widget.Toolbar>

Затем добавьте в свой toolbar.xml следующее:

app:titleTextColor="@color/colorText"
app:title="@string/app_name">

Remeber @ color / colorText - это просто ваш файл color.xml с атрибутом цвета с именем colorText и вашим цветом. Это лучший способ вызвать ваши строки, а не жестко кодировать свой цвет внутри вашего toolbar.xml. У вас также есть другие возможности для изменения текста, такие как: textAppearance ... и т. Д. Просто введите app: text ... и intelisense предоставит вам варианты в студии Android.

ваша последняя панель инструментов должна выглядеть так:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_weight="1"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/Theme.AppCompat"
       app:subtitleTextAppearance="@drawable/icon"
        app:title="@string/app_name">
    </android.support.v7.widget.Toolbar>

NB: эта панель инструментов должна находиться внутри вашего activity_main.xml.Easy Peasie

Другой вариант - сделать все это в своем классе:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.WHITE);

Удачи

RileyManda
источник
Эй, спасибо, это работает. Но вы знаете, как использовать этот атрибут только в стилях? Вместо того, чтобы делать XML более беспорядочным. Спасибо :)
Greggz
очевидно, что ваш @color поступает непосредственно из вашего строкового ресурса. Таким образом, ваш xml лучше, чем жесткое кодирование ваших цветов.
RileyManda
1

Для изменения цвета

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:background="?attr/colorPrimary"

/>

Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
        myToolbar.setTitleTextColor(ContextCompat.getColor(getApplicationContext(), R.color.Auth_Background));
        setSupportActionBar(myToolbar);
Мурад МАМАССИ
источник
1

Я боролся с этим в течение нескольких часов сегодня, потому что все эти ответы теперь как бы устарели, что с MDC и новыми возможностями тематики я просто не мог видеть, как переопределить app:titleTextColor приложение как стиль.

Ответ titleTextColorзаключается в том, что файл styles.xml доступен в том случае, если вы переопределяете то, что унаследовано от Widget.AppCompat.Toolbar. Сегодня я думаю, что лучшим выбором будет Widget.MaterialComponents.Toolbar:

<style name="Widget.LL.Toolbar" parent="@style/Widget.MaterialComponents.Toolbar">
     <item name="titleTextAppearance">@style/TextAppearance.LL.Toolbar</item>
     <item name="titleTextColor">@color/white</item>
     <item name="android:background">?attr/colorSecondary</item>
</style>

<style name="TextAppearance.LL.Toolbar" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
     <item name="android:textStyle">bold</item>
</style>

И в своей теме приложения укажите toolbarStyle:

<item name="toolbarStyle">@style/Widget.LL.Toolbar</item>

Теперь вы можете оставить xml, в котором вы указываете панель инструментов, без изменений. Долгое время я думал, что изменение android:textColorвнешнего вида текста заголовка панели инструментов должно работать, но по какой-то причине это не так.

Дэниел Уилсон
источник
0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleTextColor="@color/white"
    android:background="@color/green" />

Випин Шарма
источник
0
public class MyToolbar extends android.support.v7.widget.Toolbar {

public MyToolbar(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    AppCompatTextView textView = (AppCompatTextView) getChildAt(0);
    if (textView!=null) textView.setTextAppearance(getContext(), R.style.TitleStyle);
}

}

Или простое использование из MainActivity:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarMain);
setSupportActionBar(toolbar);
((AppCompatTextView) toolbar.getChildAt(0)).setTextAppearance(this, R.style.TitleStyle);

style.xml

<style name="TileStyle" parent="TextAppearance.AppCompat">
    <item name="android:textColor">@color/White</item>
    <item name="android:shadowColor">@color/Black</item>
    <item name="android:shadowDx">-1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
</style>
IQ.feature
источник
Хотя этот код может ответить на вопрос, было бы лучше включить некоторый контекст , объясняющий, как он работает и когда его использовать. Ответы, содержащие только код, в конечном итоге бесполезны.
Адити Рават
0

Сделай это с toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// это стиль, в котором вы можете настроить свою цветовую схему

 <style name="TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:fontFamily">@string/you_font_family</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textAppearance">@style/you_text_style</item>
    <item name="android:textColor">#000000</item>
    <item name="android:textSize">20sp</item>
</style>
shaby
источник
0

Очень просто, у меня это сработало (заголовок и значок белые):

    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/PrimaryColor"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:elevation="4dp" />
Алмейда
источник
0

С помощью библиотеки компонентов материала вы можете использовать app:titleTextColor атрибут.

В макете можно использовать что-то вроде:

<com.google.android.material.appbar.MaterialToolbar
    app:titleTextColor="@color/...."
    .../>

Вы также можете использовать собственный стиль :

<com.google.android.material.appbar.MaterialToolbar
     style="@style/MyToolbarStyle"
    .../>

с (расширяя Widget.MaterialComponents.Toolbar.Primaryстиль):

  <style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar.Primary">
       <item name="titleTextColor">@color/....</item>
  </style>

или (расширение Widget.MaterialComponents.Toolbarстиля):

  <style name="MyToolbarStyle" parent="Widget.MaterialComponents.Toolbar">
       <item name="titleTextColor">@color/....</item>
  </style>

введите описание изображения здесь

Вы также можете переопределить цвет, определенный стилем, используя android:themeатрибут (используя Widget.MaterialComponents.Toolbar.Primaryстиль):

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar.Primary"
        android:theme="@style/MyThemeOverlay_Toolbar"
        />

с участием:

  <style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- This attributes is also used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/...</item>
  </style>

введите описание изображения здесь

или (используя Widget.MaterialComponents.Toolbarстиль):

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar"
        android:theme="@style/MyThemeOverlay_Toolbar2"

с участием:

  <style name="MyThemeOverlay_Toolbar3" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- This attributes is used by title -->
    <item name="android:textColorPrimary">@color/white</item>

    <!-- This attributes is used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/secondaryColor</item>
  </style>
Габриэле Мариотти
источник