Ich versuche, die Textfarbe des einzelnen Elements zu ändern, das in der Drehschaltfläche angezeigt wird, nachdem Sie ein Element aus der Dropdown-Liste ausgewählt haben. Ich habe jetzt eine Stunde lang die Themen.xml und Styles.xml im Android SDK durchgesehen und kann anscheinend nicht herausfinden, woher der Spinner den Farbwert bezieht.
Zur Verdeutlichung versuche ich NICHT, die Farbe eines Dropdown-Elements zu ändern. Ich versuche, die Farbe des angezeigten Textes des Spinners zu ändern, wenn kein Dropdown vorhanden ist. Ich denke, man könnte es den "Button" -Text des Spinners nennen.
Antworten:
Ich denke, es ist wahrscheinlich dieses Bit in styles.xml
<style name="Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/TextAppearance.Widget.TextView.SpinnerItem</item> </style> <style name="Widget.DropDownItem.Spinner"> <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item> </style>
- = EDIT = - Hier ist das Ergebnis:
und so geht's:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MooTheme" parent="android:Theme"> <item name="android:spinnerItemStyle">@style/MooSpinnerItem</item> </style> <style name="MooSpinnerItem" parent="android:Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/MooTextAppearanceSpinnerItem</item> </style> <style name="MooTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem"> <item name="android:textColor">#F00</item> </style> </resources>
Fügen Sie dies dann einfach dem Anwendungs-Tag in Ihrer AndroidManifest.xml hinzu
android:theme="@style/MooTheme"
quelle
Ja, CaseyB ist richtig.
So stelle ich die Spinner-Textfarbe ein, ein kleines einfaches Beispiel:
styles.xml
<style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar"> <item name="android:spinnerItemStyle">@style/SpinnerItem</item> <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item> </style> <style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem"> <item name="android:textColor">#00FF00</item> </style> <style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner"> <item name="android:textColor">#FF0000</item> </style> </resources>
Dann in Ihrem Manifest:
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >
Der Text auf der Außenseite aller Ihrer Spinner ist jetzt grün und der Text auf den Dropdowns ist rot.
quelle
android:
wie folgt<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Ich habe dies mit einer anderen einfachen Technik gemacht,
Kopieren Sie die Dateien simple_spinner_item.xml und simple_spinner_dropdown_item.xml aus dem Android-Ordner res / layout und kopieren Sie sie in Ihr Projekt.
Ändern Sie dann die folgenden Zeilen
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, Android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item); spinnerSubject.setAdapter(adapter);
wie:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.simple_spinner_item); adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); spinnerSubject.setAdapter(adapter);
Der Rest ist einfach. Sie können jetzt die Datei simple_spinner_item.xml bearbeiten, um das Erscheinungsbild eines sichtbaren Elements im Spinner-Widget zu bearbeiten, und die Datei simple_spinner_dropdown_item.xml bearbeiten, um das Erscheinungsbild der Dropdown-Liste zu ändern.
Zum Beispiel enthält mein Aktivitätslayout:
<Spinner android:id="@+id/mo_spinnerSubject" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/spinnerset_background" />
und meine simple_spinner_item.xml enthält jetzt:
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:textColor="@color/custom_white" android:textSize="16sp" />
und die simple_spinner_dropdown_item.xml sieht aus wie:
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:background="@color/custom_black" android:ellipsize="marquee" android:singleLine="true" android:textColor="@color/custom_white" />
quelle
Sie können setOnItemSelectedListener für das Spinner-Objekt verwenden.
spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249)); // OR ((TextView)parentView.getChildAt(0)).setTextColor(Color.RED); } });
quelle
Es ist eigentlich sehr einfach. Ich habe überall gesucht, du musst nur Stil kreieren und auf Spinner setzen
Erstellen Sie zuerst Ihr Thema in Style.xml
<style name="spinnerTheme" parent="android:Theme"> <item name="android:textColor">@color/gray_dark</item> </style>
Fügen Sie dann in Ihrer XML-Datei, in der Sie Ihren Spinner eingestellt haben, Folgendes hinzu:
<Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="50dp" android:padding="10dp" android:paddingBottom="5dp" android:paddingLeft="10dp" android:layout_span="3" android:layout_weight="1.3" android:theme="@style/spinnerTheme" android:textSize="12sp" android:spinnerMode="dialog" android:clickable="false"/>
Viel Spaß beim Codieren
quelle
Ich glaube nicht, dass mit dem Text eine Farbe verbunden ist. Es ist höchstwahrscheinlich im Android-Code vordefiniert und muss möglicherweise nur selbst erstellt werden, wenn Sie die Farbe des Spinners ändern möchten.
Dazu gehört, dass Sie die ondraw () -Methode ändern und den Spinner so zeichnen, wie er aussehen soll.
Das einzige, von dem ich denke , dass es dieses Problem möglicherweise lösen könnte , ist die Stileigenschaft des Spinners.
Quelle: http://developer.android.com/reference/android/widget/Spinner.html
Dies könnte helfen:
http://www.designerandroid.com/?p=28
quelle
Sie können die Textfarbe ändern, indem Sie die getView-Methode wie folgt überschreiben:
new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){ @Override public View getView(int position, View convertView, @NonNull ViewGroup parent) { View view = super.getView(position, convertView, parent); //change the color to which ever you want ((CheckedTextView) view).setTextColor(Color.RED); return view; }
quelle
Dies funktionierte für mich. Erstellen Sie Ihre eigene Layoutdatei mit einer benutzerdefinierten Definition für das Spinner-Element.
custom_spinner.xml: <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/txt_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="#ffffff" />
Ändern Sie das Spinner-Element mit dem Adapter
Spinner spinner= (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner); spinner.setAdapter(adapter);
quelle