9
votes

Comment changer la couleur du texte de la barre d'outils du thème MaterialComponents.DayNight?

J'utilise le thème MaterialComponents.DayNight dans mon application. En mode jour, la couleur du texte de la barre d'outils est noire. Mais lorsque je passe en mode nuit, la couleur du texte de la barre d'outils reste noire, donc elle n'est plus visible.

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

Je souhaite changer la couleur du texte de la barre d'outils en blanc en mode nuit. Comment puis je faire ça?


3 commentaires

Avez-vous trouvé une solution pour cela?


@androiddeveloper J'ai publié une réponse ci-dessous


D'accord, merci. Ici, obtenez +1 de moi :)


5 Réponses :


2
votes

à mon avis, vous devriez définir le style sur noActionbar et concevoir une nouvelle barre d'outils et la personnaliser


0 commentaires

4
votes

Ajoutez cette entrée à votre thème:

<style name="PopupMenuTextAppearance" parent="TextAppearance.AppCompat.Menu">
    <item name="android:textColor">?attr/colorOnBackground</item>
</style>

Après cela, ajoutez le style en conséquence au styles.xml :

<item name="android:itemTextAppearance">@style/PopupMenuTextAppearance</item>

?attr/colorOnBackground est disponible dans la bibliothèque des composants matériels . Si vous ne l'utilisez pas, vous devriez pouvoir utiliser ?android:attr/textColorPrimary place.


0 commentaires

2
votes

Définissez votre thème parent sur parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge"

En utilisant cela, vous conserverez le thème original de votre ActionBar avec les attributs DarkActionBar au-dessus du thème DayNight global de MaterialComponents.


0 commentaires

5
votes

Utilisez simplement dans votre mise en page (cela fonctionne également avec la androidx.appcompat.widget.Toolbar ) le style:

  <style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <item name="colorOnPrimary">@color/...</item>
  </style>

Définissez ensuite dans les values-night/colors.xml le colorOnPrimary .

Ensuite, il existe de nombreuses alternatives.
Vous pouvez personnaliser globalement le style de la barre d'outils dans le thème de l'application avec:

<com.google.android.material.appbar.MaterialToolbar
   android:theme="@style/MyThemeOverlay_Toolbar"

avec:

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

et définissez la couleur dans les values/colors.xml et values-night/colors.xml .

Ou appliquez simplement un style dans la barre d'outils

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

ou remplacez simplement le thème par:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
  <item name="toolbarStyle">@style/MyToolbar</item>
</style>

avec:

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


0 commentaires

0
votes

J'ai utilisé ces deux lignes de code dans le fichier styles.xml:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">#00695c</item>
        <item name="colorPrimaryVariant">#439889</item>
        <item name="colorOnPrimary">#ffffff</item>
        <item name="colorSecondary">#007769</item>
        <item name="colorSecondaryVariant">#48a697</item>
        <item name="colorOnSecondary">#ffffff</item>
        <item name="colorControlNormal">@android:color/white</item>
        <item name="android:textColorPrimary">@android:color/white</item>
    </style>
</resources>

Il a changé la couleur du texte de la barre d'outils et l'icône X de la barre d'outils en blanc.

Le code entier ressemblait à ceci:

<item name="colorControlNormal">@android:color/white</item>
<item name="android:textColorPrimary">@android:color/white</item>


0 commentaires