web-dev-qa-db-fra.com

Comment définir le texte de la barre d’outils et la couleur de la flèche arrière

L’arrière-plan de la barre d’outils est de couleur sombre, je veux que le texte et la flèche arrière soient blancs. J'ai essayé de suivre, mais ça ne marche pas.

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

Il y a de fortes chances que vous sortiez du mauvais parent. Sinon, vous pouvez essayer d'ajouter style à la présentation toolbar directement, si vous souhaitez remplacer les paramètres du thème.

Dans la disposition de votre barre d’outils:

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

Dans tes styles:

 <!-- 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>
142
vhuynh

Ajouter ce qui suit comme 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>

Puis dans la mise en page où vous aviez besoin

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

Prendre plaisir

113
yubaraj poudel

Dans l'activité, vous pouvez utiliser

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

Si vous aimez choisir xml pour la couleur du titre et la flèche arrière blanche, ajoutez ce style dans 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>

Et la barre d'outils ressemble à:

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

Cette solution pourrait être plus facile. Mais cela nécessite une version plus haute de l’API (23). ajoutez simplement ce code à votre barre d’outils en 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" />
16
Tom Esendam
<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>
9
shantanu

Si vous utilisez AndroidX (à compter de juillet 2019), vous pouvez les ajouter:

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

REMARQUE! Cela a été testé pour fonctionner si votre Toolbar est placé directement dans AppBarLayout mais pas dans CollapsingToolbarLayout

6
Denis Dmitrienko
<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>

utilisez app: theme = "@ style/ToolBarStyle"

Ressources de référence: http: //blog.csdn.net/wyyl1/article/details/45972371

6
Huang Jinlong

cette méthode m'a aidé.

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

Essayez ceci sur votre fichier 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" />

Et ajoutez ceci est votre fichier colors.xml

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

Essayez beaucoup de méthodes, dans la version basse de l'API, une méthode possible est <item name="actionMenuTextColor">@color/your_color</item> et n'utilisez pas l'espace de noms 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
BoBoMEe

Si nous suivons le modèle d'activité créé par Android Studios, c'est l'AppBarLayout qui doit avoir un thème Android d'AppBarOverlay, que vous devez définir dans votre style.xml. Cela devrait vous donner votre couleur blanche toobar/actionbar color text.

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

Dans styles.xml, assurez-vous que les éléments suivants existent:

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

ajoutez cette ligne à la balise de la barre d'outils. 100% de travail Android: theme = "@ style/Theme.AppCompat.Light.DarkActionBar"

1
Gurwinder Singh

J'ai utilisé des espaces réservés, alors suivez-moi, vous voudrez peut-être conserver l'héritage du style d'origine.

Avant

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

Après:

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>

Donc

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

Si vous utilisez la dernière itération de Android Studio 3.0 et générez vos classes d'activité, vos fichiers de styles changent comme suit:

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

Pour ça:

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