Option 1) Le moyen rapide et facile (barre d'outils uniquement)
Depuis appcompat-v7-r23, vous pouvez utiliser les attributs suivants directement sur votre Toolbar
ou son style:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Si votre SDK minimum est de 23 et que vous utilisez natif, Toolbar
remplacez simplement le préfixe de l'espace de noms par android
.
En Java, vous pouvez utiliser les méthodes suivantes:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Ces méthodes prennent une couleur int et non un ID de ressource de couleur!
Option 2) Remplacer le style de la barre d'outils et les attributs de thème
layout / xxx.xml
<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="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
values / styles.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
Aidez-moi! Mes icônes ont aussi changé de couleur!
@PeterKnut a signalé que cela affecte la couleur du bouton de débordement, du bouton du tiroir de navigation et du bouton de retour. Il change également la couleur du texte de SearchView
.
Concernant les couleurs des icônes: L' colorControlNormal
hérite de
android:textColorPrimary
pour les thèmes sombres (blanc sur noir)
android:textColorSecondary
pour les thèmes clairs (noir sur blanc)
Si vous appliquez cela au thème de la barre d'action , vous pouvez personnaliser la couleur de l'icône.
<item name="colorControlNormal">#de000000</item>
Il y avait un bogue dans appcompat-v7 jusqu'à r23 qui vous obligeait à remplacer également l'homologue natif comme ceci:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Aidez-moi! Mon SearchView est en désordre!
Remarque: cette section est peut-être obsolète.
Puisque vous utilisez le widget de recherche qui, pour une raison quelconque, utilise une flèche de retour différente (pas visuellement, techniquement) de celle incluse avec appcompat-v7, vous devez le définir manuellement dans le thème de l' application . Les dessinables de la bibliothèque de support sont correctement teintés. Sinon, ce serait toujours blanc.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Quant au texte de la vue de recherche ... il n'y a pas de moyen facile. Après avoir fouillé sa source, j'ai trouvé un moyen d'accéder à la vue texte. Je n'ai pas testé cela, alors faites-le moi savoir dans les commentaires si cela n'a pas fonctionné.
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
Bonus: remplacer le style ActionBar et les attributs du thème
Un style approprié pour une action par défaut de la barre d'action appcompat-v7 ressemblerait à ceci:
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
ThemeOverlay
et que vous l'utilisez comme thème , l'arrière-plan de chaque élément enfant sera également coloré.Voici ma solution si vous devez changer uniquement la couleur du titre et non la couleur du texte dans le widget de recherche.
layout / toolbar.xml
values / themes.xml
De la même manière, vous pouvez également définir subtitleTextAppearance.
la source
Si vous prenez en charge l'API 23 et versions ultérieures , vous pouvez désormais utiliser l' attribut titleTextColor pour définir la couleur du titre de la barre d'outils.
layout / toolbar.xml
MyActivity.java
la source
Réglage
app:titleTextColor
sur mesandroid.support.v7.widget.Toolbar
travaux pour moi sur Android 4.4 et sur 6.0 aussi aveccom.android.support:appcompat-v7:23.1.0
:la source
Cela m'ennuyait un moment et je n'aimais aucune des réponses données, alors j'ai jeté un coup d'œil à la source pour voir comment cela fonctionne.
FractalWrench est sur la bonne voie, mais il peut être utilisé sous l'API 23 et n'a pas besoin d'être défini sur la barre d'outils.
Comme d'autres l'ont dit, vous pouvez définir un style dans la barre d'outils avec
et dans ce style, vous pouvez définir la couleur du texte du titre avec
pour pré API 23 ou pour 23+
Xml complet
Voici tous les attributs qui peuvent être définis pour une barre d'outils
la source
Le moyen le plus simple de changer la
Toolbar
couleur du titre avec inCollapsingToolbarLayout
.Ajouter ci-dessous les styles à
CollapsingToolbarLayout
styles.xml
la source
Si vous pouvez utiliser l'application appcompat-v7 : titleTextColor = "# fff">
la source
Cela a fonctionné pour moi
la source
Créez une barre d'outils dans votre xml ... toolbar.xml:
Ajoutez ensuite ce qui suit dans votre toolbar.xml:
Remeber @ color / colorText est simplement votre fichier color.xml avec l'attribut color nommé colorText et votre color. C'est la meilleure façon d'appeler vos chaînes plutôt que de coder en dur votre couleur dans votre toolbar.xml. Vous avez également d'autres options pour modifier votre texte, telles que: textAppearance ... etc ... tapez simplement app: text ... et intelisense vous donnera des options dans Android Studio.
votre barre d'outils finale devrait ressembler à ceci:
NB: Cette barre d'outils doit se trouver dans votre activity_main.xml.Easy Peasie
Une autre option est de tout faire dans votre classe:
Bonne chance
la source
Pour changer la couleur
/>
la source
J'ai eu du mal avec cela pendant quelques heures aujourd'hui parce que toutes ces réponses sont un peu dépassées maintenant, alors qu'avec MDC et les nouvelles capacités de thématisation, je ne pouvais tout simplement pas voir comment remplacer
app:titleTextColor
application à l'échelle en tant que style.La réponse est qu'il
titleTextColor
est disponible dans le styles.xml si vous remplacez quelque chose qui hérite deWidget.AppCompat.Toolbar
. Aujourd'hui, je pense que le meilleur choix est censé êtreWidget.MaterialComponents.Toolbar
:Et dans le thème de votre application, spécifiez le style de la barre d'outils:
Vous pouvez maintenant laisser le xml dans lequel vous spécifiez la barre d'outils inchangé. Pendant longtemps, j'ai pensé que changer l'
android:textColor
apparence du texte du titre de la barre d'outils devrait fonctionner, mais pour une raison quelconque, ce n'est pas le cas.la source
la source
}
Ou une utilisation simple depuis MainActivity:
style.xml
la source
Faites-le avec
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// c'est un style où vous pouvez personnaliser votre jeu de couleurs
la source
Très simple, cela a fonctionné pour moi (titre et icône blanche):
la source
Avec la bibliothèque de composants de matériaux, vous pouvez utiliser
app:titleTextColor
attribut.Dans la mise en page, vous pouvez utiliser quelque chose comme:
Vous pouvez également utiliser un style personnalisé :
avec (étendre le
Widget.MaterialComponents.Toolbar.Primary
style):ou (étendre le
Widget.MaterialComponents.Toolbar
style):Vous pouvez également remplacer la couleur définie par le style à l'aide de l'
android:theme
attribut (en utilisant leWidget.MaterialComponents.Toolbar.Primary
style):avec:
ou (en utilisant le
Widget.MaterialComponents.Toolbar
style):avec:
la source