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>

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>

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


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

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

@ 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


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>

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>

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


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>

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"

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>

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

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

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


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>

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" />
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.