Wie legen Sie die Titelfarbe für die neue Symbolleiste fest?

119

Ich verwende die neue v7-Symbolleiste und kann für mein ganzes Leben nicht herausfinden, wie ich die Farbe des Titels ändern kann. Ich habe den @ -Stil der Symbolleiste auf einen in styles.xml deklarierten Stil festgelegt und einen titleTextStyle mit einer textColor angewendet. Vermisse ich etwas Ich codiere für Lollipop, teste aber derzeit auf einem Kitkat-Gerät.

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
quelle

Antworten:

241

Option 1) Der schnelle und einfache Weg (nur Symbolleiste)

Seit appcompat-v7-r23 können Sie die folgenden Attribute direkt für Ihren Toolbaroder seinen Stil verwenden:

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

Wenn Ihr Mindest-SDK 23 ist und Sie native verwenden, Toolbarändern Sie einfach das Namespace-Präfix in android.

In Java können Sie die folgenden Methoden verwenden:

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

Diese Methoden verwenden eine Farbe int und keine Farbressourcen-ID!

Option 2) Überschreiben Sie den Stil und die Themenattribute der Symbolleiste

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

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

Hilfe! Meine Symbole haben auch ihre Farbe geändert!

@PeterKnut hat gemeldet, dass dies die Farbe der Überlaufschaltfläche, der Navigationsschubladenschaltfläche und der Zurückschaltfläche beeinflusst. Es ändert auch die Textfarbe von SearchView.

Zu den Symbolfarben: Die colorControlNormalerbt von

  • android:textColorPrimary für dunkle Themen (weiß auf schwarz)
  • android:textColorSecondary für helle Themen (schwarz auf weiß)

Wenn Sie dies auf das Thema der Aktionsleiste anwenden , können Sie die Symbolfarbe anpassen.

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

In appcompat-v7 bis r23 gab es einen Fehler, bei dem Sie auch das native Gegenstück wie folgt überschreiben mussten:

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

Hilfe! Mein SearchView ist ein Chaos!

Hinweis: Dieser Abschnitt ist möglicherweise veraltet.

Da Sie das Such-Widget verwenden, das aus irgendeinem Grund einen anderen Zurückpfeil (nicht visuell, technisch) als den in appcompat-v7 enthaltenen verwendet, müssen Sie ihn manuell im Thema der App festlegen . Die Drawables der Support-Bibliothek werden korrekt getönt. Sonst wäre es immer weiß.

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

Was den Text der Suchansicht betrifft ... gibt es keinen einfachen Weg. Nachdem ich die Quelle durchgesehen hatte, fand ich einen Weg, um zur Textansicht zu gelangen. Ich habe dies nicht getestet. Bitte lassen Sie mich in den Kommentaren wissen, ob dies nicht funktioniert hat.

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: Überschreiben Sie die ActionBar-Stil- und Themenattribute

Ein geeignetes Design für eine Standardaktion appcompat-v7-Aktionsleiste würde folgendermaßen aussehen:

<!-- 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
quelle
2
Diese Lösung hat verschiedene Nebenwirkungen. textColorPrimary wird auch auf die Schaltfläche der Navigationsleiste und den Text im Such-Widget angewendet. Außerdem ist die Farbe der Zurück-Taste auf Weiß eingestellt (frag mich nicht warum).
Peter Knut
@PeterKnut Zu der Zeit war mir nicht klar, wie unvollständig die vorgeschlagene Lösung war. Nach dem Bearbeiten - so benutze ich es und es funktioniert. Überprüfen Sie jedoch bitte den Textfarbausschnitt der Suchansicht.
Eugen Pechanec
Jetzt funktioniert es fast richtig. Zwei Hinweise: Das Graben von Text im Such-Widget ist keine gute Idee, seine ID kann in Zukunft geändert werden. Die Hintergrundeigenschaft in Widget.MyApp.ActionBar beeinflusst auch den Hintergrund in Schaltflächen und QuickInfos. Der Hintergrund muss direkt in <android.support.v7.widget.Toolbar> festgelegt werden.
Peter Knut
Ich stimme zu, es ist keine gute Idee, ich würde dort zumindest einen Null-Check hinzufügen (wie hoch ist jedoch die Wahrscheinlichkeit, dass sich diese ID ändert). In Bezug auf den Hintergrund: Sie haben nicht Recht, wenn Sie ihn als Stil zum Symbolleistenelement hinzufügen, gilt der Hintergrund nur für das Symbolleisten-Widget. Wenn Sie den Hintergrund im definieren ThemeOverlayund als Thema verwenden , wird auch der Hintergrund jedes untergeordneten Elements farbig.
Eugen Pechanec
OK, Sie haben Recht mit Stil vs. Thema. Mein Fehler.
Peter Knut
40

Hier ist meine Lösung, wenn Sie nur die Farbe des Titels und nicht die Farbe des Textes im Such-Widget ändern müssen.

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

Werte / Themen.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>

In ähnlicher Weise können Sie auch subtitleTextAppearance festlegen.

Peter Knut
quelle
Ich hatte ein Problem, bei dem die Farbe des Titels unterschiedlich war, je nachdem, ob die Symbolleiste in einem Fragment oder in einer Aktivität vorhanden war. Die Verwendung dieses Tricks zum Überschreiben der Farbe war die einzige Lösung, die ich finden konnte (andere Möglichkeiten zum Ändern der Farbe funktionierten nicht). Ich hoffe das wird mehr Menschen helfen. Vielen Dank!
Pedro Loureiro
3
@ Peter Knut Sie müssen angeben, dass dies nur für API21 und höher funktioniert, was es nutzlos macht
DoruChidean
@DoruChidean getestet mit Jelly Bean (API 16): Es funktioniert wie ein Zauber!
Crubio
Es ist nicht möglich, ein Thema für die Aktivität festzulegen. IE, <Aktivität android: name = ". SomeActivity" android: theme = "@ style / AppTheme.Toolbar"
Übersetzung
11

Wenn Sie API 23 und höher unterstützen, können Sie jetzt das titleTextColor-Attribut verwenden, um die Titelfarbe der Symbolleiste festzulegen .

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);
Fraktalschlüssel
quelle
Diese scheinen auch von der Appcompat-Bibliothek unterstützt zu werden.
Eugen Pechanec
10

Das Einstellen app:titleTextColormeiner android.support.v7.widget.ToolbarArbeiten für mich unter Android 4.4 und auch unter 6.0 mit 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
quelle
4
Beachten Sie, dass der Namespace App und nicht Android ist.
Tommie
einfach diese linie app hinzufügen: titleTextColor = "@ android: color / white" hat bei mir auch in kitkat und höher funktioniert. Danke @hunyadym
Ghanshyam Nayma
9

Das hat mich eine Weile geärgert und ich mochte keine der Antworten, also habe ich mir die Quelle angesehen, um zu sehen, wie es funktioniert.

FractalWrench befindet sich auf dem richtigen Pfad, kann jedoch unter API 23 verwendet werden und muss nicht in der Symbolleiste selbst festgelegt werden.

Wie andere gesagt haben, können Sie mit in der Symbolleiste einen Stil festlegen

app:theme="@style/ActionBar"

und in diesem Stil können Sie die Titeltextfarbe mit einstellen

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

für Pre-API 23 oder für 23+

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

Vollständige 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>

Hier sind alle Attribute, die für eine Symbolleiste festgelegt werden können

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

Einfachste Möglichkeit, die Titelfarbe Toolbarmit in zu ändern CollapsingToolbarLayout.

Fügen Sie unten Stile hinzu 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
quelle
3

Wenn Sie die App appcompat-v7 verwenden können : 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
quelle
2

Das hat bei mir funktioniert

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

Erstellen Sie eine Symbolleiste in Ihrer XML ... toolbar.xml:

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

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

Fügen Sie dann Folgendes in Ihre toolbar.xml ein:

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

Remeber @ color / colorText ist einfach Ihre color.xml-Datei mit dem Farbattribut colorText und Ihrer Farbe. Dies ist der beste Weg, um Ihre Zeichenfolgen aufzurufen, anstatt Ihre Farbe in Ihrer toolbar.xml fest zu codieren. Sie haben auch andere Optionen, um Ihren Text zu ändern, wie zum Beispiel: textAppearance ... etc ... geben Sie einfach app: text ... ein und intelisense gibt Ihnen Optionen in Android Studio.

Ihre endgültige Symbolleiste sollte folgendermaßen aussehen:

 <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: Diese Symbolleiste sollte sich in Ihrer activity_main.xml.Easy Peasie befinden

Eine andere Möglichkeit ist, alles in Ihrer Klasse zu erledigen:

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

Viel Glück

RileyManda
quelle
Hey, danke das funktioniert. Aber wissen Sie, wie Sie dieses Attribut nur in den Stilen verwenden können? Anstatt die XML unordentlicher zu machen. Danke :)
Greggz
Offensichtlich stammt Ihre @ -Farbe direkt aus Ihrer Zeichenfolgenressource. Auf diese Weise ist Ihre XML-Datei besser als die Hardcodierung Ihrer Farben.
RileyManda
1

Zum Ändern der Farbe

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

Ich hatte heute ein paar Stunden damit zu kämpfen, weil all diese Antworten jetzt irgendwie veraltet sind, was ich mit MDC und den neuen Themenfunktionen einfach nicht sehen konnte, wie man sie überschreibt app:titleTextColor App als Stil .

Die Antwort ist, dass titleTextColorin der Datei styles.xml verfügbar ist, dass Sie etwas überschreiben, von dem geerbt wird Widget.AppCompat.Toolbar. Heute denke ich, dass die beste Wahl sein sollte 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>

Geben Sie in Ihrem App-Design den Symbolleistenstil an:

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

Jetzt können Sie die XML-Datei, in der Sie die Symbolleiste angeben, unverändert lassen. Lange Zeit dachte ich, dass das Ändern der android:textColorTextdarstellung in der Symbolleiste funktionieren sollte, aber aus irgendeinem Grund nicht.

Daniel Wilson
quelle
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
quelle
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);
}

}}

Oder einfache Verwendung von 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
quelle
Während dieser Code die Frage beantworten kann, ist es besser, einen Kontext aufzunehmen , der erklärt, wie er funktioniert und wann er verwendet werden soll. Nur-Code-Antworten sind auf lange Sicht nicht sinnvoll.
Aditi Rawat
0

Mach es mit toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// Dies ist ein Stil, in dem Sie Ihr Farbschema anpassen können

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

Sehr einfach, das hat bei mir funktioniert (Titel und Symbol weiß):

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

Mit der Material Components Library können Sie das app:titleTextColorAttribut verwenden.

Im Layout können Sie Folgendes verwenden:

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

Sie können auch einen benutzerdefinierten Stil verwenden :

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

mit (Erweiterung des Widget.MaterialComponents.Toolbar.PrimaryStils):

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

oder (Erweiterung des Widget.MaterialComponents.ToolbarStils):

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

Geben Sie hier die Bildbeschreibung ein

Sie können die durch den Stil definierte Farbe auch mithilfe des Attributs (mithilfe des Stils) überschreiben :android:themeWidget.MaterialComponents.Toolbar.Primary

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

mit:

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

Geben Sie hier die Bildbeschreibung ein

oder (unter Verwendung des Widget.MaterialComponents.ToolbarStils):

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

mit:

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