web-dev-qa-db-fra.com

Changer la couleur de la flèche déroulante de Spinner en XML

Comme je l'ai écrit dans ma question, je souhaite modifier la couleur de la flèche déroulante (la flèche par défaut, pas une flèche personnalisée ou quelque chose du genre) d'un Spinner en XML , mais le problème est que je ne pouvais ne trouve rien qui puisse s'y référer dans XML.

C'est possible? Si oui, comment puis-je changer la couleur?

Merci d'avance.

38
Francisco Romero

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

1. Par code:

Dans votre fichier xml, assurez-vous que votre spinner a un identifiant. Disons que nous avons un spinner avec l'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ù le rouge est votre couleur définie dans colors.xml dans le dossier des valeurs.

2. À travers 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 support, vous pouvez utiliser:

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

3. Traversables:

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

Cela générera des dessins personnalisés pour la vue de votre choix avec la couleur de votre choix. Assurez-vous de sélectionner spinner, puis téléchargez les ressources.

97
Hussein El Feky

Je suis surpris que personne ne l’ait signalé, mais vous pouvez simplement sous-classe Widget.AppCompat.Spinner et changer backgroundTint

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

et l'appliquer à la Spinner

<Spinner
    style="@style/Spinner"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:spinnerMode="dropdown" />
13
mewa

utiliser l'attribut backgroundTint 

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

si min_SDK <21 (Lollipop), vous devez utiliser AppCompatSpinner  

<Android.support.v7.widget.AppCompatSpinner
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:backgroundTint="@color/white"
        /> 
11
Mehrdad Faraji

Si( API 21+ ) {

vous pouvez utiliser directement Android:backgroundTint="@color/color" dans votre Spinner:

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

}autre {

créez 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 de style dans toutes les API.

3
Mahmoud Ayman

essaye ça:

spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this,
                R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
2
MrG
<Spinner
            Android:id="@+id/spinner"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:backgroudTint="#00000" />
0
Shweta Chauhan

Utilisez this dependency pour créer un disque très agréable et facile et Utilisez "app: arrowTint =" @ color/green "pour changer la couleur de la flèche

0
Ahmad Arslan