Jak ustawić kolor tytułu dla nowego paska narzędzi Toolbar?

119

Używam nowego paska narzędzi w wersji 7 i do końca życia nie mogę wymyślić, jak zmienić kolor tytułu. Ustawiłem @style paska narzędzi na styl zadeklarowany w styles.xml i zastosowałem titleTextStyle z textColor. Czy coś mi brakuje? Koduję dla Lollipopa, ale obecnie testuję na urządzeniu KitKat.

style.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
źródło

Odpowiedzi:

241

Opcja 1) Szybki i łatwy sposób (tylko pasek narzędzi)

Od appcompat-v7-r23 możesz używać następujących atrybutów bezpośrednio w swoim Toolbarlub jego stylu:

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

Jeśli minimalny zestaw SDK to 23 i używasz natywnego, Toolbarpo prostu zmień prefiks przestrzeni nazw na android.

W Javie możesz użyć następujących metod:

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

Te metody pobierają kolor int, a nie identyfikator zasobu koloru!

Opcja 2) Zastąp styl i atrybuty motywu paska narzędzi

układ / 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"/>

wartości / style.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>

Wsparcie! Moje ikony też zmieniły kolor!

@PeterKnut zgłosił, że ma to wpływ na kolor przycisku przepełnienia, przycisku szuflady nawigacji i przycisku Wstecz. Zmienia również kolor tekstu SearchView.

Odnośnie kolorów ikon: colorControlNormalDziedziczy z

  • android:textColorPrimary dla ciemnych motywów (biały na czarnym)
  • android:textColorSecondary do jasnych motywów (czarny na białym)

Jeśli zastosujesz to do motywu paska akcji , możesz dostosować kolor ikony.

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

Wystąpił błąd w appcompat-v7 do r23, który wymagał od Ciebie zastąpienia natywnego odpowiednika w następujący sposób:

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

Wsparcie! Mój SearchView to bałagan!

Uwaga: ta sekcja jest prawdopodobnie nieaktualna.

Ponieważ używasz widżetu wyszukiwania, który z jakiegoś powodu używa innej strzałki wstecz (nie wizualnie, technicznie) niż ten dołączony do appcompat-v7, musisz ustawić go ręcznie w motywie aplikacji . Elementy do rysowania w bibliotece pomocy są odpowiednio przyciemniane. W przeciwnym razie zawsze byłby biały.

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

Jeśli chodzi o tekst widoku wyszukiwania ... nie ma łatwego sposobu. Po przekopaniu się przez jego źródło znalazłem sposób na przejście do widoku tekstu. Nie testowałem tego, więc daj mi znać w komentarzach, jeśli to nie zadziałało.

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

Bonus: Zastąp styl i atrybuty motywu ActionBar

Odpowiedni styl dla domyślnego paska akcji appcompat-v7 wyglądałby następująco:

<!-- 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
źródło
2
To rozwiązanie ma różne skutki uboczne. Funkcja textColorPrimary jest stosowana również na przycisku szuflady nawigacji i tekście w widgecie wyszukiwania. Co więcej, kolor przycisku wstecz jest ustawiony na biały (nie pytaj mnie dlaczego).
Peter Knut
@PeterKnut Wtedy nie zdawałem sobie sprawy, jak niekompletne jest zaproponowane rozwiązanie. Po edycji - tak go używam i to działa. Proszę jednak przejrzeć fragment kodu koloru tekstu widoku wyszukiwania.
Eugen Pechanec
Teraz działa prawie poprawnie. Dwie uwagi: kopanie tekstu w widgecie wyszukiwania nie jest dobrym pomysłem, jego identyfikator można zmienić w przyszłości. Właściwość Background w Widget.MyApp.ActionBar wpływa również na tło przycisków i podpowiedzi. Tło należy ustawić bezpośrednio w <android.support.v7.widget.Toolbar>.
Peter Knut,
Zgadzam się, to nie jest dobry pomysł, przynajmniej dodałbym tam zerową weryfikację (jednak jakie są szanse na zmianę tego identyfikatora). Odnośnie tła: Nie masz racji, jeśli dodasz je jako styl do elementu paska narzędzi, tło zostanie zastosowane tylko do widgetu paska narzędzi. Jeśli zdefiniujesz tło w programie ThemeOverlayi użyjesz go jako motywu , to tło każdego elementu potomnego również zostanie pokolorowane.
Eugen Pechanec
OK, masz rację, jeśli chodzi o styl i motyw. Mój błąd.
Peter Knut
40

Oto moje rozwiązanie, jeśli chcesz zmienić tylko kolor tytułu, a nie kolor tekstu w widgecie wyszukiwania.

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

wartości / motywy.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>

W podobny sposób możesz ustawić również wygląd napisów.

Peter Knut
źródło
Miałem problem polegający na tym, że kolor tytułu był inny w zależności od tego, czy pasek narzędzi istniał we fragmencie, czy w działaniu. Użycie tej sztuczki do zastąpienia koloru było jedyną poprawką, jaką udało mi się znaleźć (inne sposoby zmiany koloru nie działały). Mam nadzieję, że pomoże to większej liczbie osób. Dzięki!
Pedro Loureiro
3
@Peter Knut, musisz określić, że działa to tylko dla API21 i nowszych, co sprawia, że ​​jest bezużyteczne
DoruChidean
@DoruChidean testowane z Jelly Bean (API 16): działa jak urok!
crubio
Nie można ustawić motywu na aktywność. IE, <activity android: name = ". SomeActivity" android: theme = "@ style / AppTheme.Toolbar"
lostintranslation
11

Jeśli obsługujesz API 23 i nowsze , możesz teraz użyć atrybutu titleTextColor, aby ustawić kolor tytułu paska narzędzi.

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);
fractalwrench
źródło
Wydaje się, że są one również obsługiwane przez bibliotekę appcompat.
Eugen Pechanec
10

Ustawiam app:titleTextColormoje android.support.v7.widget.Toolbarprace na Androidzie 4.4 i 6.0 również z 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
źródło
4
Zwróć uwagę, że przestrzeń nazw to aplikacja, a nie Android.
Tommie
po prostu dodanie tej aplikacji liniowej: titleTextColor = "@ android: color / white" działało również w KitKat i nowszych wersjach. Dzięki @hunyadym
Ghanshyam Nayma
9

Przez chwilę mnie to denerwowało i nie podobała mi się żadna z udzielonych odpowiedzi, więc spojrzałem na źródło, aby zobaczyć, jak to działa.

FractalWrench znajduje się na właściwej ścieżce, ale można go używać poniżej API 23 i nie trzeba go ustawiać na pasku narzędzi samodzielnie.

Jak powiedzieli inni, możesz ustawić styl na pasku narzędzi za pomocą

app:theme="@style/ActionBar"

iw tym stylu możesz ustawić kolor tekstu tytułu za pomocą

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

dla wersji przed API 23 lub dla 23+

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

Pełny plik 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>

Oto wszystkie atrybuty, które można ustawić dla paska narzędzi

<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
źródło
4

Najprostszy sposób zmiany Toolbarkoloru tytułu za pomocą inCollapsingToolbarLayout .

Dodaj poniższe style do CollapsingToolbarLayout

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

style.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
źródło
3

Jeśli możesz używać 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
źródło
2

To zadziałało dla mnie

<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
źródło
2

Utwórz pasek narzędzi w swoim xml ... toolbar.xml:

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

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

Następnie dodaj następujące elementy w pliku toolbar.xml:

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

Remeber @ color / colorText to po prostu twój plik color.xml z atrybutem koloru o nazwie colorText i twoim kolorem. Jest to najlepszy sposób na wywołanie ciągów znaków zamiast zakodowania na sztywno twojego koloru wewnątrz toolbar.xml. Masz również inne opcje modyfikowania tekstu, takie jak: tekst Wygląd ... itd ... po prostu wpisz app: tekst ... a intelisense wyświetli opcje w Android Studio.

Twój końcowy pasek narzędzi powinien wyglądać następująco:

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

Uwaga: ten pasek narzędzi powinien znajdować się w twoim activity_main.xml.Easy Peasie

Inną opcją jest zrobienie tego wszystkiego w klasie:

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

Powodzenia

RileyManda
źródło
Hej, dzięki, to działa. Ale wiesz, jak używać tego atrybutu tylko w stylach? Zamiast powodować bałagan XML. Dzięki :)
Greggz,
oczywiście twój @kolor pochodzi bezpośrednio z twojego zasobu ciągu, dzięki czemu twój xml jest ładniejszy niż zakodowanie na stałe twoich kolorów.
RileyManda,
1

Aby zmienić kolor

<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
źródło
1

Walczyłem z tym przez kilka godzin dzisiaj, ponieważ wszystkie te odpowiedzi są teraz trochę nieaktualne, co z MDC i nowymi możliwościami tworzenia motywów po prostu nie mogłem zrozumieć, jak zastąpić app:titleTextColoraplikację szeroko jako styl.

Odpowiedź jest taka, że titleTextColordostępna w pliku styles.xml jest nadpisywanie czegoś, co dziedziczy Widget.AppCompat.Toolbar. Dziś myślę, że najlepszym wyborem powinno być 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>

W motywie aplikacji określ pasek narzędzi Styl:

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

Teraz możesz pozostawić plik XML, w którym określasz pasek narzędzi, bez zmian. Przez długi czas myślałem, że zmiana android:textColorwyglądu tekstu tytułu w pasku narzędzi powinna działać, ale z jakiegoś powodu nie.

Daniel Wilson
źródło
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
źródło
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);
}

}

Lub proste użycie z 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. Funkcja
źródło
Chociaż ten kod może odpowiedzieć na pytanie, lepiej byłoby uwzględnić kontekst , wyjaśniając, jak to działa i kiedy go używać. Odpowiedzi zawierające tylko kod nie są przydatne na dłuższą metę.
Aditi Rawat,
0

Zrób to z toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// to jest styl, w którym możesz dostosować swój schemat kolorów

 <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
źródło
0

Bardzo proste, to zadziałało dla mnie (tytuł i ikona białe):

    <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
źródło
0

Z Biblioteką komponentów materiałów można używać app:titleTextColor atrybutu.

W układzie możesz użyć czegoś takiego:

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

Możesz także użyć własnego stylu :

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

z (rozszerzeniem Widget.MaterialComponents.Toolbar.Primarystylu):

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

lub (rozszerzenie Widget.MaterialComponents.Toolbarstylu):

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

wprowadź opis obrazu tutaj

Możesz również nadpisać kolor zdefiniowany przez styl za pomocą android:themeatrybutu (używając Widget.MaterialComponents.Toolbar.Primarystylu):

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

z:

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

wprowadź opis obrazu tutaj

lub (używając Widget.MaterialComponents.Toolbarstylu):

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

z:

  <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
źródło