webentwicklung-frage-antwort-db.com.de

Ändern Sie die Farbe des Dropdown-Pfeils von Spinner in XML

Wie ich in meiner Frage schrieb, möchte ich die Farbe des Dropdownpfeils (Standardpfeil, nicht benutzerdefinierter Pfeil oder ähnliches) einer Spinner in XML ändern, aber das Problem ist, dass ich nicht t finden Sie etwas, auf das Sie in XML verweisen können.

Ist es möglich? Wenn ja, wie kann ich die Farbe ändern?

Danke im Voraus.

38

Dafür gibt es drei Möglichkeiten.

1. Durch Code:

Stellen Sie in Ihrer XML-Datei sicher, dass Ihr Spinner eine ID hat. Nehmen wir an, wir haben einen Spinner mit id "Spinner".

Fügen Sie Ihrem Code in Ihrem onCreate () Folgendes hinzu:

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

dabei ist Rot die definierte Farbe in colors.xml im Ordner "values".

2. Durch XML:

Für API 21+:

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

oder wenn Sie die Support-Bibliothek verwenden, können Sie Folgendes verwenden:

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

3. Durch Drawables:

Sie können dieses Online-Tool verwenden: http://Android-holo-colors.com

Dadurch werden für jede Ansicht, die Sie mit Ihrer bevorzugten Farbe wünschen, benutzerdefinierte Drawables erstellt. Stellen Sie sicher, dass Sie den Spinner auswählen, und laden Sie dann die Ressourcen herunter.

97
Hussein El Feky

Ich bin überrascht, dass niemand darauf hingewiesen hatte, aber Sie können einfach Widget.AppCompat.Spinner subclass und backgroundTint ändern.

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

und wende es auf die Spinner an

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

verwenden Sie das backgroundTint-Attribut 

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

wenn min_SDK <21 (Lollipop) ist, sollten Sie AppCompatSpinner verwenden. 

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

If( API 21+ ) {

sie können direkt Android:backgroundTint="@color/color" in Ihrem Spinner verwenden:

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

} else{

kreieren Sie Ihren eigenen Stil:

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

dann in Spinner:

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

}

Hinweis: Sie können die Stilmethode in allen APIs verwenden.

3
Mahmoud Ayman

versuche dies:

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

Verwenden Sie this , um einen sehr schönen und einfachen Spinner zu erstellen, und Verwenden Sie "app: arrowTint =" @ color/green ", um die Pfeilfarbe zu ändern

0
Ahmad Arslan