Farbe des Spinners ändern

  • Antworten:4
  • Bentwortet
Niels Gundermann
  • Forum-Beiträge: 9

05.02.2013, 10:56:17 via Website

Hallo,
ich hab schon seit langem ein Problem mit der Schriftfarbe des Spinners und die Lösungen, die ich bisher gefunden haben funktionieren bei meinem Programm nicht. Warum weiß ich nicht.
Wäre super, wenn einer das Problem kennt, oder weiß, wie man es behebt.

Hier ein paar Infos:

Der Spinner in der xml:
1<Spinner
2 android:id="@+id/PointsCompetitorSpinner"
3 style="@color/black"
4 android:layout_width="wrap_content"
5 android:layout_height="wrap_content"
6 android:layout_alignParentRight="true"
7 android:layout_below="@+id/tvKataPointsCategory"
8 android:layout_toRightOf="@+id/textView1"
9 tools:listitem="@android:layout/simple_spinner_item" />


Und hier wird der Spinner gefüllt:
1private void updateSpinner(Spinner spinner,
2 CompetitorGroup group) {
3
4 List<String> valueList = new ArrayList<String>();
5 for (int i = 0; i < group.getCurrentCompetitiors().size(); i++)
6 {
7 if(!group.getCurrentCompetitiors().isEmpty()){
8 valueList.add(group.getCurrentCompetitiors().get(i).toString());
9 }
10 }
11
12 ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, valueList);
13 spinner.setAdapter(adapter);
14
15 }


Was die Funktionen angeht ist das auch alles ok, aber hier sieht man mal wie das so visualisiert wird:
s7.directupload.net/file/d/3157/hqhyx5mp_jpg.htm
(Ich darf noch keine Link posten)

Im roten Rahmen sieht man, dass die Schriftfarbe weiß ist.
Wenn man den Spinner dann aufklappt, ändert sich diese Farbe nicht und man kann einfach gar nichts lesen, wie auf dem Bild zu sehen ist.

— geändert am 05.02.2013, 10:57:54

Antworten
Stefan S.
  • Forum-Beiträge: 560

05.02.2013, 14:51:45 via Website

Müsstest du dies nicht über ein drawable lösen?

1<selector
2 xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <item android:state_focused="true" >
5 <shape>
6 <gradient
7 android:endColor="#00000000"
8 android:startColor="#00000000"
9 android:angle="90" />
10 <solid
11 android:color="@color/TitleColor"/>
12 <stroke
13 android:width="1dp"
14 android:color="@color/texteditborder2" />
15 <corners
16 android:radius="10dp" />
17 <padding
18 android:left="8dp"
19 android:top="8dp"
20 android:right="8dp"
21 android:bottom="8dp" />
22 </shape>
23 </item>
24
25 <item>
26 <shape>
27
28 <gradient
29 android:endColor="#00000000"
30 android:startColor="#00000000"
31 android:angle="90" />
32 <solid
33 android:color="@color/TitleColor"/>
34 <stroke
35 android:width="1dp"
36 android:color="@color/texteditborder1" />
37 <corners
38 android:radius="10dp" />
39 <padding
40 android:left="8dp"
41 android:top="8dp"
42 android:right="8dp"
43 android:bottom="8dp" />
44 </shape>
45 </item>
46</selector>

Die @color-Werte sind als values hinterlegt.

Niels Gundermann

Antworten
Niels Gundermann
  • Forum-Beiträge: 9

05.02.2013, 16:44:39 via Website

Also das schreib ich dann einfach in ne xml-Datei rein?
Und muss ich das nicht dann noch über einen bestimmten Befehl dem Spinner zuweisen?

Antworten
Niels Gundermann
  • Forum-Beiträge: 9

05.02.2013, 18:46:41 via Website

Oh Maaaaan....
Ich habs :-D

Also für alle Interessierten:
Ich habe dem Spinner über diesen Adapter ein Layout zugewiesen, welches in der Source definiert wurde.
1ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, valueList);
2spinner.setAdapter(adapter);

Das android.R.layout.simple_spinner_item wird höchstwahrscheinlich mit der Schriftfarbe weiß definiert.
Da ich diesen Spinner über diese Methode während der Laufzeit mehrfach aktualisiere, hätte ich mir noch so viele schöne Layouts dafür ausdenken können.
Den wirkliche Quell-Datei für dieses simple_spinner_item, habe ich leider noch nicht gefunden (schade eigentlich), von daher bleibt das hier eine Vermutung.
Fakt ist jedoch, dass es jetzt so funktioniert, wie ich wollte.
@Stafan S.:
Keine Ahnung, ob deine Lösung so funktioniert hätte, dennoch bin ich durch deine Anmerkung auf meine Lösung gekommen - insofern DANKE ;-)

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

05.02.2013, 19:44:21 via Website

Das android.R.layout.simple_spinner_item wird höchstwahrscheinlich mit der Schriftfarbe weiß definiert.

Nö, das gibts in hell und in dunkel und du bekommst die Variante, die dem Theme deiner App bzw. Activity entspricht.

Demnach nutzt deine App ein dark theme und du färbst alle Elemente manuell auf helle Farben um?

Niels Gundermann

Antworten