Changer la couleur de la flèche vers le bas de Spinner en XML

comme je l'ai écrit dans ma question, je veux changer la couleur de la flèche descendante (la flèche par défaut, pas une flèche personnalisée ou quelque chose comme ça) d'un Spinner EN XML, mais le problème est que je n'ai rien trouvé à y faire référence à partir du XML.

Est-il possible? Si oui, comment puis-je changer la couleur?

Merci à l'avance.

36
demandé sur Hussein El Feky 2015-08-23 14:51:02

6 réponses

Il y a trois façons d'y parvenir.

1. À l'aide de code:

dans votre xml, assurez-vous que votre spinner a un id. Disons que nous avons un spinner avec id "spinner".

dans votre code, ajoutez ce qui suit dans votre onCreate():

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP);

où rouge est votre couleur définie dans couleurs.xml dans le dossier des valeurs.

2. Par xml:

pour API 21+:

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:backgroundTint="@color/red" />

ou si vous utilisez la bibliothèque de prise en charge, vous pouvez utiliser:

<android.support.v7.widget.AppCompatSpinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:backgroundTint="@color/red" />

3. Grâce à un drawable:

Vous pouvez utiliser cet outil en ligne: http://android-holo-colors.com

cela générera des tirages personnalisés pour n'importe quelle vue que vous voulez avec votre couleur préférée. Sélectionnez spinner, puis téléchargez les ressources.

84
répondu Hussein El Feky 2017-05-22 22:09:32

je suis surpris que personne ne l'ait signalé, mais vous pouvez simplement sous-classe Widget.AppCompat.Spinner et changez backgroundTint

<style name="Spinner" parent="Widget.AppCompat.Spinner">
        <item name="backgroundTint">@color/spinnerTint</item>
</style>

et l'appliquer à l' Spinner

<Spinner
    style="@style/Spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:spinnerMode="dropdown" />
13
répondu mewa 2016-05-07 00:30:30

utiliser l'attribut backgroundtin

<Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/white"
        />
AppCompatSpinner

<android.support.v7.widget.AppCompatSpinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/white"
        /> 
11
répondu Mehrdad Faraji 2016-09-29 15:36:32

essaye ceci:

spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this,
                R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
2
répondu MrG 2016-06-28 06:42:04

Si ( API 21+) {

vous pouvez utiliser directement android:backgroundTint="@color/color", à l'intérieur de votre Spinner:

<Spinner
   android:id="@+id/spinner"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:backgroundTint="@color/color" />

} sinon {

créer votre propre style:

<style name="spinner_style" parent="Widget.AppCompat.Spinner">
        <item name="backgroundTint">@color/color</item>
</style>

puis dans Spinner:

<Spinner
   android:id="@+id/spinner"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   style="@style/spinner_style"/> 

}

Remarque: vous pouvez utiliser la méthode style dans toutes les API.

2
répondu Mahmoud Ayman 2018-04-23 13:26:23
<Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroudTint="#00000" />
0
répondu Shweta Chauhan 2016-07-28 08:22:18