web-dev-qa-db-fra.com

Modifier la couleur du texte du titre de la barre d’action à l’aide du thème Light.DarkActionBar dans AppCompat 21

J'utilise la bibliothèque v7 appcompat 21 pour utiliser les nouveaux styles de matériau sur les périphériques antérieurs à Lollipop. Mon styles.xml ressemble à ceci:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:textColorPrimary">#ff0000</item>
    <item name="Android:textColorPrimaryInverse">#ff0000</item>
</style>

J'essaie de changer la couleur du texte sur la barre d'action. Mais peu importe ce que je mets pour textColorPrimary ou textColorPrimaryInverse, la couleur est toujours blanche. Si j'hérite de Theme.AppCompat, je peux remplacer "textColorPrimary", et si j'hérite de Theme.AppCompat.Light, je peux remplacer "textColorPrimaryInverse". Mais ni ne fonctionnent lorsque vous utilisez le thème Light.DarkActionBar.

J'utilise certainement AppTheme car la définition d'attributs tels que colorPrimary pour modifier la couleur d'arrière-plan de la barre d'actions fonctionne correctement. Je n'utilise aucun autre fichier de style de qualificatif de ressource.

J'ai fouillé dans les fichiers de styles Android) et je n'arrive pas à comprendre quel attribut redéfinir. Des idées? S'agit-il d'un bogue d'appcompat?

55
weiyin

Vous pouvez le changer avec l'attribut actionBarStyle du thème.

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="Android:textColor">CHANGE_COLOR_HERE</item>
</style>
161
jimmy0251

Cela fera que votre titre de barre d'outils utilise la couleur blanche:

<Android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

Pour comprendre quelle est la différence entre ThemeOverlay.AppCompat.Dark.ActionBar et Theme.AppCompat.Light.DarkActionBar vérifier cette réponse

C'est app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" qui applique une couleur claire car la couleur du titre utilisée dans ce thème est le blanc.

25
vovahost

assurez-vous d’apporter les modifications dans tous vos dossiers de valeurs, tels que "valeurs-v11", "valeurs-v14", etc. s’il existe.

Sinon, assurez-vous que le même 'AppTheme' que vous avez montré ci-dessus est utilisé dans l'application.

S'il vous plaît, postez le fichier complet style.xml et le code manifeste faisant référence au style, ce qui vous permettra de mieux comprendre votre problème.

Aussi, vous pouvez essayer le réglage app: thème et app: popupTheme attributs sur votre barre d'outils.

4
Sreekanth

Essayez d’ajouter ceci à la création de votre activité. Fonctionne avec presque toutes les versions de Android.

Pour Java Activité:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

Pour les fragments:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
3
onexf

J'ai utilisé un fichier XML de mise en page généré et je n'ai pas remarqué que le Android:theme attribut a été annulé.

Avez-vous vérifié le vôtre? :)

1
DoruChidean