Como você define a cor do título da nova barra de ferramentas?

119

Estou usando a nova barra de ferramentas v7 e não consigo descobrir como mudar a cor do título. Eu defini o @style da barra de ferramentas para um estilo declarado em styles.xml e apliquei um titleTextStyle com um textColor. Estou esquecendo de algo? Estou programando para o Lollipop, mas testando atualmente em um dispositivo 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"/>
Dennis
fonte

Respostas:

241

Opção 1) A maneira rápida e fácil (apenas barra de ferramentas)

Desde appcompat-v7-r23, você pode usar os seguintes atributos diretamente em seu Toolbarou em seu estilo:

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

Se o seu SDK mínimo for 23 e você usar o nativo, Toolbarbasta alterar o prefixo do namespace para android.

Em Java, você pode usar os seguintes métodos:

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

Esses métodos usam uma cor int e não um ID de recurso de cor!

Opção 2) Substituir os atributos de tema e estilo da Barra de Ferramentas

layout / 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"/>

valores / estilos.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>

Socorro! Meus ícones mudaram de cor também!

@PeterKnut relatou que isso afeta a cor do botão de estouro, botão da gaveta de navegação e botão voltar. Também muda a cor do texto de SearchView.

Em relação às cores do ícone: O colorControlNormalherda de

  • android:textColorPrimary para temas escuros (branco sobre preto)
  • android:textColorSecondary para temas leves (preto no branco)

Se você aplicar isso ao tema da barra de ação , poderá personalizar a cor do ícone.

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

Havia um bug no appcompat-v7 até r23 que exigia que você também substituísse a contraparte nativa como:

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

Socorro! Meu SearchView está uma bagunça!

Observação: esta seção possivelmente está obsoleta.

Como você usa o widget de pesquisa que, por algum motivo, usa uma seta para trás diferente (não visualmente, tecnicamente) da incluída com appcompat-v7, você deve configurá-lo manualmente no tema do aplicativo . Os drawables da biblioteca de suporte são tingidos corretamente. Caso contrário, seria sempre branco.

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

Quanto ao texto da visualização de pesquisa ... não há maneira fácil. Depois de vasculhar sua fonte, encontrei uma maneira de chegar à visualização de texto. Eu não testei isso, então, por favor, deixe-me saber nos comentários se isso não funcionou.

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

Bônus: substitui atributos de estilo e tema do ActionBar

O estilo apropriado para uma barra de ação appcompat-v7 de ação padrão seria assim:

<!-- 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>
Eugen Pechanec
fonte
2
Essa solução tem vários efeitos colaterais. textColorPrimary é aplicado também no botão da gaveta de navegação e no texto no widget de pesquisa. Além disso, a cor do botão Voltar é definida como branca (não me pergunte por quê).
Peter Knut
@PeterKnut Na época, não percebi o quão incompleta a solução proposta era. Após a edição - é assim que eu uso e funciona. No entanto, reveja o snippet de cor de texto de exibição de pesquisa, por favor
Eugen Pechanec
Agora funciona quase corretamente. Duas notas: cavar texto no widget de pesquisa não é uma boa ideia, seu id pode ser alterado no futuro. A propriedade de plano de fundo em Widget.MyApp.ActionBar influencia também o plano de fundo em botões e dicas de ferramentas. O plano de fundo deve ser definido em <android.support.v7.widget.Toolbar> diretamente.
Peter Knut
Eu concordo, não é uma boa ideia, eu pelo menos adicionaria uma verificação nula lá (no entanto, quais são as chances de que esse id seja alterado). Sobre o fundo: Você não está certo, se você adicionar como um estilo ao elemento da barra de ferramentas, o fundo se aplica apenas ao widget da barra de ferramentas. Se você definir o plano de fundo no ThemeOverlaye usá-lo como um tema , o plano de fundo de cada elemento filho também será colorido.
Eugen Pechanec
OK, você está certo com o estilo x tema. Meu erro.
Peter Knut
40

Aqui está minha solução se você precisar alterar apenas a cor do título e não a cor do texto no widget de pesquisa.

layout / 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"/>

values ​​/ 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>

Da mesma forma, você também pode definir subtitleTextAppearance.

Peter Knut
fonte
Eu estava tendo um problema em que a cor do título seria diferente dependendo se a barra de ferramentas existia em um fragmento ou em uma atividade. Usar este truque para substituir a cor foi a única correção que consegui encontrar (outras maneiras de alterar a cor não funcionaram). Espero que isso ajude mais pessoas. Obrigado!
Pedro Loureiro
3
@Peter Knut você precisa especificar que isso funciona apenas para API21 e superior, o que meio que o torna inútil
DoruChidean
@DoruChidean testado com Jelly Bean (API 16): funciona perfeitamente!
crubio
Não é possível definir o tema da atividade. IE, <activity android: name = ". SomeActivity" android: theme = "@ style / AppTheme.Toolbar"
lostintranslation
11

Se você oferece suporte à API 23 e superior, agora pode usar o atributo titleTextColor para definir a cor do título da barra de ferramentas.

layout / 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);
chave fractal
fonte
Eles parecem ser suportados pela biblioteca appcompat também.
Eugen Pechanec
10

Configurando app:titleTextColormeus android.support.v7.widget.Toolbartrabalhos para mim no Android 4.4 e no 6.0 também com 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
fonte
4
Observe que o namespace é app e não android.
Tommie
simplesmente adicionar esta linha app: titleTextColor = "@ android: color / white" funcionou para mim no kitkat e acima também. Obrigado @hunyadym
Ghanshyam Nayma
9

Isso estava me irritando um pouco e não gostei de nenhuma das respostas dadas, então dei uma olhada na fonte para ver como funciona.

FractalWrench está no caminho certo, mas pode ser usado abaixo da API 23 e não precisa ser definido na barra de ferramentas por conta própria.

Como já foi dito, você pode definir um estilo na barra de ferramentas com

app:theme="@style/ActionBar"

e nesse estilo você pode definir a cor do texto do título com

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

para pré API 23 ou para 23+

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

Xml completo

<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>

Aqui estão todos os atributos que podem ser definidos para uma barra de ferramentas

<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
fonte
4

Maneira mais simples de alterar a Toolbarcor do título com em CollapsingToolbarLayout.

Adicione os estilos abaixo para 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>
Poras Bhardwaj
fonte
3

Se você pode usar 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>   
Surender Kumar
fonte
2

Isso funcionou para mim

<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>
Hitesh Sahu
fonte
2

Crie uma barra de ferramentas em seu xml ... toolbar.xml:

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

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

Em seguida, adicione o seguinte em seu toolbar.xml:

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

Remeber @ color / colorText é simplesmente seu arquivo color.xml com o atributo color denominado colorText e sua cor. Esta é a melhor maneira de chamar suas strings em vez de codificar sua cor dentro de sua barra de ferramentas.xml. Você também tem outras opções para modificar seu texto, como: textAppearance ... etc ... basta digitar app: text ... e a intelisense lhe dará opções no android studio.

sua barra de ferramentas final deve ter a seguinte aparência:

 <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: Esta barra de ferramentas deve estar dentro do seu activity_main.xml.Easy Peasie

Outra opção é fazer tudo em sua classe:

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

Boa sorte

RileyManda
fonte
Ei, obrigado, isso funciona. Mas você sabe usar esse atributo apenas nos estilos? Em vez de tornar o xml mais bagunçado. Obrigado :)
Greggz
obviamente, sua @color vem diretamente de seu recurso de string. Dessa forma, seu xml é mais puro do que codificar suas cores.
RileyManda
1

Para mudar a cor

<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);
Mourad MAMASSI
fonte
1

Lutei com isso por algumas horas hoje porque todas essas respostas estão meio desatualizadas agora, com MDC e os novos recursos de temas, eu simplesmente não conseguia ver como substituir o app:titleTextColoraplicativo como um estilo.

A resposta é que titleTextColorestá disponível no styles.xml se você está substituindo algo que herda de Widget.AppCompat.Toolbar. Hoje eu acho que a melhor escolha deveria ser 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>

E no tema do seu aplicativo, especifique o toolbarStyle:

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

Agora você pode deixar o xml onde especificou a barra de ferramentas inalterada. Por muito tempo pensei que mudar a android:textColoraparência do texto do título da barra de ferramentas deveria funcionar, mas por algum motivo não funciona.

Daniel Wilson
fonte
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" />

Vipin Sharma
fonte
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);
}

}

Ou uso simples de 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
fonte
Embora este código possa responder à pergunta, seria melhor incluir algum contexto , explicando como funciona e quando usá-lo. Respostas apenas em código não são úteis a longo prazo.
Aditi Rawat
0

Faça com toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// este é o estilo onde você pode personalizar seu esquema de cores

 <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>
miserável
fonte
0

Muito simples, funcionou para mim (título e ícone brancos):

    <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" />
Almeida
fonte
0

Com a Biblioteca de Componentes de Materiais, você pode usar o app:titleTextColor atributo.

No layout, você pode usar algo como:

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

Você também pode usar um estilo personalizado :

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

com (ampliando o Widget.MaterialComponents.Toolbar.Primaryestilo):

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

ou (estendendo o Widget.MaterialComponents.Toolbarestilo):

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

insira a descrição da imagem aqui

Você também pode substituir a cor definida pelo estilo usando o android:themeatributo (usando o Widget.MaterialComponents.Toolbar.Primaryestilo):

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

com:

  <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>

insira a descrição da imagem aqui

ou (usando o Widget.MaterialComponents.Toolbarestilo):

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

com:

  <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>
Gabriele Mariotti
fonte