Come impostare il testo della barra degli strumenti e il colore della freccia indietro


116

Lo sfondo della barra degli strumenti è di colore scuro, voglio che il testo e la freccia indietro siano bianchi. Ho provato a seguire, ma non funziona.

<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
Prova ad aggiungere app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"al tuo <android.support.v7.widget.Toolbar>; la freccia indietro e il testo saranno bianchi, come ha detto @yubarajpoudel.
1111161171159459134

Risposte:


153

È probabile che ti stia estendendo dal genitore sbagliato. In caso contrario, puoi provare ad aggiungere il file styleatoolbar direttamente layout, se desideri sovrascrivere le impostazioni del tema.

Nel layout della barra degli strumenti:

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

Nei tuoi stili:

 <!-- 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
dando errore durante l'aggiunta di questo stile al styles.xmlfile
Gopal Singh Sirvi

1
non hai bisogno della parte drawerArrowStyle per rispondere alla domanda
luckyhandler

124

Aggiungi quanto segue come toolbar.xml

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

Quindi nel layout in cui avevi bisogno

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

Godere


10
Sì, funziona! In particolare app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar".
1111161171159459134

1
Dovrebbe essere<include layout="@layout/toolbar"/>
Tim

63

All'interno di Activity, puoi usare

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

Se ti piace scegliere xml sia per il colore del titolo che per la freccia indietro bianca, aggiungi questo stile in style.xml.

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

E la barra degli strumenti assomiglia a:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:theme="@style/ToolBarStyle"
        android:layout_height="?attr/actionBarSize"
  />

1
QUESTO FUNZIONA! Tante risposte casuali - Penso che la cosa da notare sia che funziona per: android.support.v7.widget.Toolbar annidato all'interno: android.support.design.widget.AppBarLayout Molte grazie
Sagar Patel

1
la soluzione java non cambia il colore della freccia
java-love

19

Questa soluzione potrebbe essere più semplice. Ma richiede una versione API superiore (23). aggiungi semplicemente questo codice alla tua barra degli strumenti in XML:

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

@VygintasB true
Tom Esendam

1
Non è necessario impostare android: titleTextColor = "# ffffffff", solo android: theme = "@ style / ThemeOverlay.AppCompat.Dark.ActionBar" e app: popupTheme = "@ style / ThemeOverlay.AppCompat.Light"
Almeida

16

Se utilizzi AndroidX(a partire da luglio 2019) puoi aggiungere questi:

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

NOTA! Questo è stato testato per funzionare se il tuo Toolbarè posizionato direttamente all'interno AppBarLayoutma non all'internoCollapsingToolbarLayout


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>

Questa è la risposta se stai avendo un file appbarlayout. Grazie!
Nuhman

8

questo metodo mi ha aiutato.

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

usa app: theme = "@ style / ToolBarStyle"

Risorse di riferimento : http: //blog.csdn.net/wyyl1/article/details/45972371


1
Spiega le tue risposte, il solo messaggio di codice non è molto chiaro per rispondere a una domanda.
SuperBeddingMan

3

Prova questo sul tuo file XML

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

E aggiungi questo è il tuo file colors.xml

    <color name="colorAccent">YOUR_COLOR</color>

1
Puoi condividere con noi cosa c'era nell'app: theme = "@ style / ToolbarColoredBackArrow"
Simon

3

Aggiungi questa riga a Toolbar. Funzionante al 100%

android:theme="@style/Theme.AppCompat.Light.DarkActionBar"

1

Prova molti metodi, nella versione bassa dell'API, un metodo fattibile è <item name="actionMenuTextColor">@color/your_color</item> e non utilizzare lo spazio dei nomi Android

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

Ho usato i segnaposto, quindi segui semplicemente, poiché potresti voler mantenere l'eredità dallo stile originale.

Prima

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

Dopo:

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>

Perciò

<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

Se seguiamo il modello di attività creato da Android Studios, è l'AppBarLayout che deve avere un tema Android di AppBarOverlay, che dovresti definire nel tuo styles.xml. Questo dovrebbe darti il ​​testo a colori della barra degli strumenti / barra delle azioni di colore bianco.

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

In styles.xml, assicurati che esista quanto segue:

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

1

Questo approccio ha funzionato per me utilizzando la libreria dei componenti dei materiali:

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>

Adattato da questa risposta: https://stackoverflow.com/a/48205577/238753


0

Per cambiare l'icona disegnabile indietro della barra degli strumenti puoi usare questo:
Aggiungi il <item name="toolbarStyle">@style/ToolbarStyle</item>nel tuo tema.
Ed ecco lo ToolbarStylestesso:

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

0

Se utilizzi l'ultima iterazione di Android Studio 3.0 e generi le tue classi di attività, nei tuoi file di stili cambia questo:

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

A questa:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.