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.
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.
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" />
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"
/>
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.
versuche dies:
spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this,
R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
<Spinner
Android:id="@+id/spinner"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:backgroudTint="#00000" />
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