web-dev-qa-db-fra.com

Android - Changer la couleur du texte du titre de la barre d'action

Je développe une application et je souhaite change the textcolor of the actionbar title. maintenant, j'ai défini un thème dans mon manifeste:

<application
        Android:theme="@style/AppTheme">
</application>

qui est défini dans styles.xml:

<style name="AppTheme" parent="Android:style/Theme.Holo.Light">
        <item name="Android:textViewStyle">@style/AppTheme.TextView</item>
        <item name="Android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
    </style>

    <style name="AppTheme.ActionBarStyle" parent="@Android:style/Widget.Holo.Light.ActionBar">
        <item name="Android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="AppTheme.ActionBar.TitleTextStyle" parent="@Android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="Android:textColor">@color/themeapp</item>
    </style>

    <style name="AppTheme.TextView" parent="@Android:style/Widget.TextView">
        <item name="Android:textColor">#FFFFFF</item>
    </style>

cela ne fonctionne pas mais je ne comprends pas pourquoi. cela devrait fonctionner selon cette réponse . ni le style textview ne fonctionne.

qu'est ce que je fais mal?

UPDATE: Modifié pour répondre à la réponse de Grace Feng ci-dessous

17
jack_the_beast

errant autour de StackOverflow j'ai trouvé cette réponse qui a finalement fonctionné.

Je le rapporte ici:

<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
    <item name="Android:actionBarStyle">@style/ActionBar</item>
    ...
</style>

<style name="ActionBar" parent="@Android:style/Widget.ActionBar">
  <item name="Android:titleTextStyle">@style/ActionBar.Title</item>
  <item name="Android:subtitleTextStyle">@style/ActionBar.Subtitle</item>
  ...
</style>

<style name="ActionBar.Title">
  <item name="Android:textColor">@color/my_color</item>
</style>

<style name="ActionBar.Subtitle">
  <item name="Android:textColor">@color/my_color</item>
</style>
0
jack_the_beast

En utilisant SpannableString, nous pouvons définir la couleur du texte de Actionbar title

SpannableString s = new SpannableString(title);
s.setSpan(new ForegroundColorSpan(Color.GREEN), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);
14
Parag Chauhan
<style name="AppTheme" parent="Android:style/Theme.Holo.Light">

<style name="AppTheme.TextView" parent="Android:Widget.TextView">

Vous avez manqué un symbole "@" ici?

<style name="MyTheme" parent="@Android:style/Theme.Holo.Light">

également 

<style name="AppTheme.TextView" parent="@Android:Widget.TextView">
9
panda

Vous pouvez trouver comment personnaliser ActionBarici . Je recommande d'utiliser ToolBar et Theme.AppCompat à la place - exemple .

4
Vladimir Markeev

Ajoutez simplement app:titleTextColor="@color/CUSTOM_COLOR" comme suit:

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:background="@color/yellow_light"
    app:titleTextColor="@color/CUSTOM_COLOR"
    app:popupTheme="@style/AppTheme.PopupOverlay"/>
2
Maximoapps Inc

Je suppose que vous utilisez ToolBar comme ActionBar. De toutes les réponses, je pense que c'est la plus facile à mettre en œuvre. Et fonctionne sur toutes les versions d'api.

Alors voila,

Le titre de la barre d'action utilise textColorPrimary comme couleur de texte. Donc, pour changer cela dans styles.xml, créez un nouveau style avec un élément pour textColorPrimary et définissez la couleur dont vous avez besoin.

<style name="appBarTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="Android:textColorPrimary">@color/colorRed</item>
</style>

Ajoutez maintenant ce style en tant que thème pour la barre d’outils dans le fichier XML.

<Android.support.v7.widget.Toolbar
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:layout_scrollFlags="enterAlways"
    Android:id="@+id/toolbar"
    Android:theme="@style/appBarTheme">
</Android.support.v7.widget.Toolbar>

Et maintenant, vous avez ce dont vous avez besoin.

Merci

1
Akash Rudra

Quand j'ai eu le même problème, j'ai utilisé: 

<item name="titleTextStyle">@style/ActionBarTextStyle</item>

<item name="Android:titleTextStyle">@style/ActionBarTextStyle</item>
1
IDmikael

Changez le thème Activity comme suit:

<style name="ThemeName" parent="Android:Theme.Holo.Light">

   <item name="Android:actionMenuTextColor">@color/white</item>

</style>
0
coder

Il semble que vous ayez utilisé style au lieu de theme. Les styles et les thèmes diffèrent . Alors remplacez

<style name="AppTheme" parent="Android:style/Theme.Holo.Light">

Avec

<style name="AppTheme" parent="Android:Theme.Light">
0
Hi I'm Frogatto

Je pense que c'est juste le problème de votre activité. J'ai utilisé le même code que vous et cela fonctionne . enter image description here

Tout d'abord, j'ai utilisé AppCompatActivity comme activité de base et j'ai des erreurs. et puis j'utilise activité et ça marche . À mon avis, votre code est utilisé pour theme pour Theme.Holo, et maintenant nous utilisons Theme.AppCompat. Donc, si vous voulez changer, il suffit de référencer Changer le fond et la couleur du texte du thème AppCompat Light DarkActionBar sur Android . Cela fonctionne pour moi. Bonne chance pour vous.

0
sunday

Je viens d'avoir ce problème, finalement l'a trouvé . Dans votre style.xml, ne spécifiez pas de couleur d'arrière-plan pour votre barre d'outils . Définissez ensuite la couleur dans chaque fichier layout.xml:

<Android.support.v7.widget.Toolbar
    Android:id="@+id/my_toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:background="#B678EE"
    Android:elevation="4dp"
    Android:theme="@style/ToolbarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

Cela vous donne la possibilité d’avoir facilement différentes couleurs de barres d’action en fonction de l’activité, le cas échéant.

0
SentientFlesh

Je ne connais pas la solution, mais j'ai pu changer la couleur du texte entre le blanc et le noir avec cette méthode.

donc, dans le fichier styles.xml, vous avez:

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
    </style>
</resources>

si vous modifiez le contenu de parent = "..." en thèmes sombres ou clairs, la couleur du texte est adaptée à ces thèmes. Par exemple, pour le moment, vous avez un thème sombre et le texte est en blanc, mais lorsque je passe à "Theme.AppCompat.Light", la couleur du texte devient noire.

J'espère que ça aide d'une certaine manière.

0
Max