So legen Sie den Text in der Symbolleiste und die Farbe des Zurückpfeils fest

115

Der Hintergrund der Symbolleiste hat eine dunkle Farbe. Ich möchte, dass Text und Pfeil nach hinten weiß sind. Ich habe versucht zu folgen, aber es funktioniert nicht.

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/blue_darker</item>
        <item name="colorAccent">@color/purple</item>
        <!-- item name="android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere. 
        <item name="android:textColorSecondary">@color/white</item>
        <item name="android:toolbarStyle">@style/AppTheme.ToolbarStyle</item>
        <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item>

        <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>

    </style>

    <style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
        <!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>-->
        <item name="android:textColor">@color/white</item> // doesn't work
        <item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item>
    </style>
Taranfx
quelle
10
Versuchen Sie, app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"zu Ihrem hinzuzufügen <android.support.v7.widget.Toolbar>; Der Pfeil nach hinten und der Text sind weiß, wie @yubarajpoudel sagte.
1111161171159459134

Antworten:

153

Es besteht die Möglichkeit, dass Sie vom falschen Elternteil ausgehen. Wenn nicht, können Sie versuchen style, das toolbardirekt zum Layout hinzuzufügen , wenn Sie die Einstellungen des Themas überschreiben möchten.

In Ihrem Symbolleistenlayout:

 <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="?attr/actionBarSize"
      android:minHeight="?attr/actionBarSize"
      app:theme="@style/ToolBarStyle"
      app:popupTheme="@style/ToolBarPopupStyle"
      android:background="@color/actionbar_color" />

In Ihren Stilen:

 <!-- ToolBar -->
  <style name="ToolBarStyle" parent="Theme.AppCompat">
      <item name="android:textColorPrimary">@android:color/white</item>
      <item name="android:textColorSecondary">@android:color/white</item>
      <item name="actionMenuTextColor">@android:color/white</item>      
      <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
      <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
 </style>
vhuynh
quelle
5
Fehler beim Hinzufügen dieses Stils zur styles.xmlDatei
Gopal Singh Sirvi
1
Sie brauchen nicht den drawerArrowStyle Teil, um die Frage zu beantworten
Luckyhandler
123

Fügen Sie Folgendes als toolbar.xml hinzu

<?xml version="1.0" encoding="utf-8"?>
<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_height="wrap_content"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="?attr/colorPrimary">

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

Dann im Layout wo Sie es brauchen

<include layout="@layout/toolbar"/>

Genießen

Yubaraj Poudel
quelle
10
Ja, funktioniert! Besonders app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar".
1111161171159459134
1
Sollte sein<include layout="@layout/toolbar"/>
Tim
63

Innerhalb der Aktivität können Sie verwenden

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));

Wenn Sie gerne XML sowohl für die Titelfarbe als auch für den Pfeil nach hinten wählen, fügen Sie diesen Stil einfach in style.xml hinzu.

 <style name="ToolBarStyle" parent="Theme.AppCompat">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/white</item>
</style>

Und die Symbolleiste sieht aus wie:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:theme="@style/ToolBarStyle"
        android:layout_height="?attr/actionBarSize"
  />
Shihab Uddin
quelle
1
DAS FUNKTIONIERT! So viele zufällige Antworten - Ich denke, die Sache zu beachten ist, dass dies funktioniert für: android.support.v7.widget.Toolbar verschachtelt in: android.support.design.widget.AppBarLayout Vielen Dank
Sagar Patel
1
Die Java-Lösung ändert die Pfeilfarbe nicht
Java-Love
19

Diese Lösung könnte einfacher sein. Es ist jedoch eine höhere API-Version erforderlich (23). Fügen Sie diesen Code einfach in XML zu Ihrer Symbolleiste hinzu:

<Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/actionBarSize"
    android:background="?android:attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:titleTextColor="#ffffffff" />
Tom Esendam
quelle
@ WygintasB wahr
Tom Esendam
1
Es ist nicht erforderlich, android: titleTextColor = "# ffffffff" festzulegen, sondern nur android: theme = "@ style / ThemeOverlay.AppCompat.Dark.ActionBar" und app: popupTheme = "@ style / ThemeOverlay.AppCompat.Light"
Almeida
16

Wenn Sie AndroidX(Stand Juli 2019) verwenden, können Sie diese hinzufügen:

<androidx.appcompat.widget.Toolbar
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  app:layout_collapseMode="pin"
  app:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
  app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"/>

HINWEIS! Dies wurde getestet, um zu funktionieren, wenn Sie Toolbardirekt im Inneren, AppBarLayoutaber nicht im Inneren platziert sindCollapsingToolbarLayout

Denis Dmitrienko
quelle
9
<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimaryDark"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>
Shantanu
quelle
Dies ist die Antwort, wenn Sie eine haben appbarlayout. Vielen Dank!
Nuhman
8

Diese Methode hat mir geholfen.

<style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primaryDark</item>
        <item name="colorAccent">@color/highlightRed</item>
        <item name="actionBarTheme">@style/ToolbarStyle</item>
</style>

<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar">
        <item name="android:textColorPrimary">@color/white</item>
</style>
Руслан Кушалиев
quelle
6
<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="?attr/actionBarSize"
android:background="@color/actionBar"
app:titleTextAppearance="@style/ToolbarTitleText"
app:theme="@style/ToolBarStyle">

<TextView
    android:id="@+id/title"
    style="@style/ToolbarTitleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="hh"/>

<!-- ToolBar -->
<style name="ToolBarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="actionMenuTextColor">#ff63BBF7</item>
</style>

benutze app: theme = "@ style / ToolBarStyle"

Referenzressourcen: http: //blog.csdn.net/wyyl1/article/details/45972371

Huang Jinlong
quelle
1
Bitte erläutern Sie Ihre Antworten. Nur der Postleitzahl ist für die Beantwortung einer Frage nicht ganz klar.
SuperBiasedMan
3

Versuchen Sie dies in Ihrer XML-Datei

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:titleTextColor="@color/colorAccent"
        app:theme="@style/ToolbarColoredBackArrow"
        app:subtitleTextColor="@color/colorAccent"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

Und fügen Sie hinzu, dies ist Ihre Farben.xml-Datei

    <color name="colorAccent">YOUR_COLOR</color>
Faxriddin Abdullayev
quelle
1
Bitte können Sie uns mitteilen, was in der App war: theme = "@ style / ToolbarColoredBackArrow"
Simon
3

Fügen Sie diese Zeile hinzu Toolbar. 100% arbeiten

android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
Gurwinder Singh
quelle
1

Probieren Sie viele Methoden aus. In der niedrigen Version der API ist eine praktikable Methode, <item name="actionMenuTextColor">@color/your_color</item>und verwenden Sie nicht den Android-Namespace

ps:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <!-- change the textColor -->
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>
BoBoMEe
quelle
1

Ich habe Platzhalter verwendet, folgen Sie also einfach den Anweisungen, da Sie möglicherweise die Vererbung des ursprünglichen Stils beibehalten möchten.

Vor

<android.support.v7.widget.Toolbar
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/{{originalBaseStyle}}"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

Nach dem:

styles.xml

<style name="{{yourToolbarStyle}}" parent="{{originalBaseStyle}}">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/white</item>
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

Deshalb

<android.support.v7.widget.Toolbar
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/{{yourToolbarStyle}}"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Juan Mendez
quelle
1

Wenn wir der von Android Studios erstellten Aktivitätsvorlage folgen, muss für das AppBarLayout ein Android-Thema von AppBarOverlay vorhanden sein, das Sie in Ihrer Datei styles.xml definieren sollten. Das sollte Ihnen Ihren weißen Farbtext für Toobar / Actionbar geben.

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">  ...

Stellen Sie in styles.xml sicher, dass Folgendes vorhanden ist:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
Yaojin
quelle
1

Dieser Ansatz hat bei mir mithilfe der Materialkomponentenbibliothek funktioniert:

In styles.xml:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Your styles here -->

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

<style name="AppTheme.Toolbar" parent="Widget.MaterialComponents.Toolbar">
    <item name="titleTextColor">@android:color/white</item>
</style>

Angepasst an diese Antwort: https://stackoverflow.com/a/48205577/238753

Sam
quelle
0

Um das Rückensymbol der Symbolleiste zu ändern, können Sie Folgendes verwenden:
Fügen Sie das <item name="toolbarStyle">@style/ToolbarStyle</item>in Ihr Thema ein.
Und hier ist das ToolbarStyleselbst:

<style name="ToolbarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="navigationIcon">@drawable/ic_up_indicator</item>
</style>
Clans
quelle
0

Wenn Sie die neueste Iteration von Android Studio 3.0 verwenden und Ihre Aktivitätsklassen generieren, ändern Sie Folgendes in Ihren Stildateien:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

Dazu:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
Muruthi
quelle