Je voudrais définir ma couleur déroulante spinner sur blanc, tout en gardant les autres éléments de mon thème la couleur par défaut. Voici la situation:
<Android.support.v7.widget.Toolbar
Android:layout_height="@dimen/action_bar_height"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:theme="@style/ToolbarTheme.Base"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<Spinner
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"/>
</Android.support.v7.widget.Toolbar>
Et le style est:
<!-- My base app theme -->
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/theme_tint</item>
<!-- <item name="colorControlNormal">#FFFFFF</item> -->
<item name="Android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:typeface">sans</item>
<item name="Android:windowBackground">@color/background_primary</item>
</style>
<!-- My Toolbar theme -->
<style name="ToolbarTheme.Base" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="colorControlNormal">#FFFFFF</item>
</style>
Si je devais mettre <item name="colorControlNormal">#FFFFFF</item>
dans le thème de l'application (commenté ci-dessus), puis le menu déroulant du spinner deviendra blanc MAIS la case deviendra également blanche. Alors, comment puis-je obtenir que le spinner ne devienne blanc?
Enfin, j'ai trouvé une solution sur la façon de changer la couleur de la flèche de Spinner
en blanc.
1) Dans styles.xml
, ajoutez le style suivant:
<style name="ActionBarThemeOverlay" parent="">
<item name="Android:textColorPrimary">#ffffff</item>
<item name="colorControlNormal">#ffffff</item>
<item name="colorControlHighlight">#ff33b5e5</item>
</style>
<style name="Widget.MyTheme.HeaderBar.Spinner" parent="Widget.AppCompat.Light.Spinner.DropDown.ActionBar">
<item name="Android:theme">@style/ActionBarThemeOverlay</item>
</style>
2) Dans la mise en page, où vous utilisez le Spinner
(dans votre cas avec Toolbar
), ajoutez le style à votre spinner:
<Spinner
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_spinner"
style="@style/Widget.MyTheme.HeaderBar.Spinner"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
Je suis juste tombé sur ces questions. Même si cela a été demandé il y a quelque temps, je voulais juste laisser une réponse qui devrait fonctionner:
Barre d'outils * .xml
<Android.support.v7.widget.Toolbar
<!-- leave the theme stuff out of here -->
style="@style/MyToolbarStyle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
Styles/Thèmes
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- your other attributes -->
<!-- following is used to tint the checkbox - purple for demo purpose -->
<item name="colorControlNormal">#2196F3</item>
</style>
<style name="MyToolbarStyle">
<item name="Android:minHeight">?actionBarSize</item>
<item name="Android:background">?colorPrimary</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="theme">@style/MyToolbarTheme</item>
</style>
<style name="MyToolbarTheme">
<!-- Used to tint the back arrow, menu and spinner arrow -->
<item name="colorControlNormal">#FFF</item>
</style>
Résultat
Remarque: j'ai rendu la case violette à des fins de démonstration