In meiner Android-Anwendung verwende ich Spinner, und ich habe Daten aus der SQLite-Datenbank in den Spinner geladen, und es funktioniert ordnungsgemäß. Hier ist der Code dafür.
Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();
list.add("All Lists");
if (cursor.getCount() > 0) {
for (int i = 0; i < cursor.getCount(); i++) {
keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
list.add(keyList[i]);
cursor.moveToNext();
}
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
Jetzt möchte ich die Textfarbe und die Textgröße der Spinnerdaten ändern. Ich habe folgende XML-Zeilen für mein Spinner-Tag in meiner XML-Datei verwendet, aber es funktioniert nicht.
android:textColor="@android:color/white"
android:textSize="11dp"
Wie kann ich die Textfarbe und Textgröße meines Spinners ändern?
Antworten:
Erstellen Sie eine benutzerdefinierte XML-Datei für Ihr Spinner-Element.
spinner_item.xml:
Geben Sie dem Text in dieser Datei Ihre benutzerdefinierte Farbe und Größe.
Verwenden Sie nun diese Datei, um Ihre Spinner-Gegenstände wie folgt anzuzeigen:
Sie müssen die Dropdown-Ressource nicht festlegen. Es dauert
spinner_item.xml
nur, um Ihre Artikel in Spinner zu zeigen.quelle
android:id="@+id/customSpinnerItemTextView"
. Wenn Sie dies getestet hätten, würden Sie dies wissen.Einfach und knackig ...:
quelle
Wenn alle Spinner möglicherweise dieselbe Textfarbe für ihre TextView-Elemente haben, besteht ein anderer Ansatz darin, einen benutzerdefinierten Stil für Dropdown-Elemente für Spinner zu verwenden:
In
res/values/styles.xml
:Und definieren Sie Ihre benutzerdefinierte Farbe in res / values / color.xml:
quelle
android:
wie folgt<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Hier ist ein Link, der Ihnen helfen kann, die Farbe des Spinners zu ändern :
Klick hier
Sie müssen Ihre eigene Layoutdatei mit einer benutzerdefinierten Definition für das Spinner-Element spinner_item.xml erstellen :
Wenn Sie die Dropdown-Listenelemente anpassen möchten, müssen Sie eine neue Layoutdatei erstellen. spinner_dropdown_item.xml :
Und schließlich noch eine Änderung in der Erklärung des Spinners:
Das ist es.
quelle
android:textSize="20sp"
im ersten Code-Snippet nutzlos ist: Die Textgröße des Steuerelements ist in derspinner_item.xml
Wenn Sie mit android.support.v7.widget.AppCompatSpinner arbeiten, ist hier die einfachste getestete Lösung mit Stilen:
Und der Stil:
Der einzige Nachteil ist das Android: backgroundTint legt die Farbe sowohl für den Dropdown-Pfeil als auch für den Dropdown-Hintergrund fest.
quelle
style="@style/Widget.AppCompat.Spinner.Underlined"
aber Sie haben nurstyle name="Spinner"
...paddingStart
erfordert API 17,backgroundTint
erfordert API 21.Um Verzögerungen zu vermeiden, müssen Sie nicht nur die Texteigenschaften im
onItemSelected
Listener, sondern auch in deronCreate
Methode der Aktivität festlegen (dies ist jedoch etwas schwierig).Insbesondere müssen Sie dies
onCreate
nach dem Einstellen des Adapters eingeben:Und dann setzen Sie dies in
onItemSelected
:Hier ist ein vollständiges Beispiel:
Weitere Einzelheiten finden Sie in meiner Frage .
quelle
Wenn Sie möchten, dass sich die Textfarbe nur im ausgewählten Element ändert, kann dies eine mögliche Problemumgehung sein. Es hat bei mir funktioniert und sollte auch bei Ihnen funktionieren.
quelle
Für jemanden, der nur einen
Style
Weg brauchtAppCompat
.Ergebnis
styles.xml
your_spinner_layout.xml
Plus
Und wenn Sie
android:entries
programmgesteuert mit definiertem Stil einstellen möchten .Versuche dies.
Wie im Code ist es am wichtigsten , dasselbe
Context
mit dem zu verwendenSpinner
.quelle
So ändern Sie die Farbe des Spinnertextes:
quelle
Anstatt ein benutzerdefiniertes Layout zu erstellen, um eine kleine Größe zu erhalten, und wenn Sie das interne kleine LAYOUT von Android für den Spinner verwenden möchten, sollten Sie Folgendes verwenden:
"android.R.layout.simple_gallery_item" anstelle von "android.R.layout.simple_spinner_item".
Dies kann die Größe des Spinner-Layouts verringern. Es ist nur ein einfacher Trick.
Wenn Sie die Größe einer Dropdown-Liste reduzieren möchten, verwenden Sie Folgendes:
quelle
Der einfachste Weg, die android.R.layout-Ressourcen wiederzuverwenden / zu ändern, ist einfach die Definition. Führen Sie in Android Studio Ctrl+ Bauf android.R.layout.simple_spinner_item.xml aus.
Sie gelangen zur Ressourcendatei. Kopieren Sie einfach die Ressourcendatei und fügen Sie ein neues Layout in Ihren Package.R.layout-Ordner ein. Ändern Sie die Textfarbe der Textansicht nach Ihren Wünschen und rufen Sie sie dann einfach im Adapter wie folgt auf:
quelle
Für diejenigen, die die
DrowDownIcon
Farbe ändern möchten, können Sie dies verwendenquelle
<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AppTheme
Drawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
Sie können die Textfarbe ändern, indem Sie die getView-Methode wie folgt überschreiben:
quelle
Am einfachsten: Funktioniert für mich
quelle
benutze einfach das:
quelle
Eine weitere Variante der Ashraf-Lösung besteht darin, sicherzustellen, dass Sie die Bildschirmgrößen berücksichtigen. Sie müssen den Spinner in onCreate installieren und den Listener einstellen, nachdem Sie den Adapter eingestellt haben:
Anschließend können Sie die Textgröße der angezeigten Ansicht ändern, bevor auf den Drehknopf geklickt wird:
Sie müssen lediglich layoutspezifische Ordner wie folgt erstellen:
Fügen Sie dann eine XML-Datei mit dem Namen "bool.xml" in jeden dieser Ordner ein:
quelle
Zuerst müssen wir die einfache
xml
Ressourcendatei fürtextview
Folgendes erstellen :und speichern Sie es. nach dem Einstellen auf Ihrer Adapterliste.
quelle
Sie können diese Art von Adapter für Spinner haben, vollständig angepasst:
während R.layout.spinner_text ist:
quelle
Wenn Sie eine einfache Methode wünschen, um Elemente zu einem Dropdown-Menü hinzuzufügen, fügen Sie sie normalerweise der Datei strings.xml hinzu. Hier ist ein Beispiel zum Hinzufügen von Farbe mithilfe der Datei strings.xml:
ALTERSBEREICH AUSWÄHLEN
quelle
Ich habe dies wie folgt gemacht. Ich habe die Methoden getDropDownView () und getView () verwendet.
Verwenden Sie
getDropDownView()
für geöffnete Spinner.Und
getView()
für geschlossene Spinner verwenden.quelle
Versuchen Sie diese Methode. Es funktioniert für mich.
quelle
füge einfach einen neuen Stil wie diesen hinzu:
und benutze es:
quelle
das ist alles viel Spaß beim Codieren ...
quelle