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
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>
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);
<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">
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"/>
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
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>
Changez le thème Activity
comme suit:
<style name="ThemeName" parent="Android:Theme.Holo.Light">
<item name="Android:actionMenuTextColor">@color/white</item>
</style>
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">
Je pense que c'est juste le problème de votre activité. J'ai utilisé le même code que vous et cela fonctionne .
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.
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.
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.