W mojej aplikacji na Androida korzystam z tarczy i załadowałem dane z bazy danych SQLite do tarczy i działa ona poprawnie. Oto kod do tego.
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);
Teraz chcę zmienić kolor i rozmiar tekstu danych przędzarki. Użyłem następujących linii XML do mojego znacznika spinnera w moim pliku XML, ale to nie działa.
android:textColor="@android:color/white"
android:textSize="11dp"
Jak mogę zmienić kolor i rozmiar tekstu mojej przędzarki?
Odpowiedzi:
Utwórz niestandardowy plik XML dla elementu przędzarki.
spinner_item.xml:
Podaj własny kolor i rozmiar tekstu w tym pliku.
Teraz użyj tego pliku, aby wyświetlić elementy przędzarki, takie jak:
Nie musisz ustawiać rozwijanego zasobu. Wystarczy, że
spinner_item.xml
pokażesz swoje przedmioty w tarczy.źródło
android:id="@+id/customSpinnerItemTextView"
. Gdybyś to debugował, wiedziałbyś o tym.Prosty i wyraźny ...:
źródło
Jeśli wszystkie błystki mogą mieć ten sam kolor tekstu dla elementów TextView, innym podejściem jest użycie niestandardowego stylu dla rozwijanych elementów tarczy:
W
res/values/styles.xml
:I zdefiniuj swój niestandardowy kolor w res / wartości / colors.xml:
źródło
android:
ten sposób<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Oto link, który może pomóc Ci zmienić kolor Błystki :
Kliknij tutaj
Musisz utworzyć własny plik układu z niestandardową definicją elementu spinner spinner_item.xml :
Jeśli chcesz dostosować elementy listy rozwijanej, musisz utworzyć nowy plik układu. spinner_dropdown_item.xml :
I wreszcie kolejna zmiana w deklaracji przędzarki:
Otóż to.
źródło
android:textSize="20sp"
w pierwszym fragmencie kodu fragment kodu jest bezużyteczny: rozmiar kontrolki zdefiniowano wspinner_item.xml
Jeśli pracujesz z Android.support.v7.widget.AppCompatSpinner, oto najprostsze przetestowane rozwiązanie wykorzystujące style:
I styl:
Jedynym minusem jest Android: backgroundTint ustawia kolor zarówno strzałki rozwijanej, jak i rozwijanego tła.
źródło
style="@style/Widget.AppCompat.Spinner.Underlined"
ale masz tylkostyle name="Spinner"
...paddingStart
wymaga interfejsu API 17,backgroundTint
wymaga interfejsu API 21.Aby zapobiec opóźnieniom, musisz nie tylko ustawić właściwości tekstu w
onItemSelected
detektorze, ale także wonCreate
metodzie działania (ale jest to trochę trudne).W szczególności należy to ustawić
onCreate
po ustawieniu adaptera:A następnie wstaw to
onItemSelected
:Oto pełny przykład:
Aby uzyskać więcej informacji, zobacz moje pytanie .
źródło
Jeśli chcesz zmienić kolor tekstu tylko w wybranym elemencie, może to być możliwe obejście problemu. To działało dla mnie i powinno również działać dla ciebie.
źródło
Dla kogoś, kto potrzebuje tylko
Style
sposobuAppCompat
.Wynik
styles.xml
twoja_spinner_layout.xml
Plus
jeśli chcesz ustawić
android:entries
programowo ze zdefiniowanym stylem.Spróbuj tego.
Podobnie jak w kodzie, najważniejsze jest używanie tego samego
Context
zSpinner
najważniejszym.źródło
Aby zmienić kolor tekstu przędzarki:
źródło
Zamiast tworzyć niestandardowy układ, aby uzyskać mały rozmiar, a jeśli chcesz użyć wewnętrznego LAYOUT Androida w małym rozmiarze dla tarczy, powinieneś użyć:
„android.R.layout.simple_gallery_item” zamiast „android.R.layout.simple_spinner_item”.
Może zmniejszyć rozmiar układu przędzarki. To tylko prosta sztuczka.
Jeśli chcesz zmniejszyć rozmiar listy rozwijanej, użyj tego:
źródło
Najłatwiejszym sposobem ponownego użycia / zmiany zasobów android.R.layout jest po prostu przejście do definicji. W Android Studio wykonaj Ctrl+ Bna android.R.layout.simple_spinner_item.xml.
Zabierze Cię do pliku zasobów. Po prostu skopiuj plik zasobów i dodaj nowy układ do folderu Package.R.layout i zmień kolor tekstu widoku tekstu, jak chcesz, a następnie po prostu wywołaj go w adapterze w następujący sposób:
źródło
Dla tych, którzy chcą zmienić
DrowDownIcon
kolor, możesz użyć tego w ten sposóbźródło
<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); }
Można zmienić kolor tekstu, zastępując metodę getView w następujący sposób:
źródło
Najprostszy: działa dla mnie
źródło
po prostu użyj tego:
źródło
Inną odmianą rozwiązania Ashrafa jest upewnienie się, że bierzesz pod uwagę rozmiary ekranu. Musisz ustawić pokrętło w opcji onCreate i ustawić detektor po ustawieniu adaptera:
Następnie możesz zacząć zmieniać rozmiar tekstu widoku wyświetlanego przed kliknięciem pokrętła:
Wszystko, co musisz zrobić, to utworzyć foldery specyficzne dla układu, takie jak to:
a następnie dodaj plik xml o nazwie „bool.xml” do każdego z tych folderów:
źródło
Najpierw musimy utworzyć prosty
xml
plik zasobów dlatextview
takich jak poniżej:i zapisz to. po ustawieniu na liście adapterów.
źródło
możesz mieć ten typ adaptera do tarczy, całkowicie dostosowany:
podczas gdy R.layout.spinner_text to:
źródło
Jeśli chcesz prostej metody, aby dodać elementy do listy rozwijanej, zwykle dodajesz je do pliku strings.xml. Oto przykład dodawania koloru za pomocą pliku strings.xml:
WYBIERZ ZAKRES WIEKU
źródło
Zrobiłem to w następujący sposób. Korzystam z metod getDropDownView () i getView ().
Użyj
getDropDownView()
dla otwartego Spinnera.I użyj
getView()
do zamkniętego pokrętła.źródło
Wypróbuj tę metodę. To działa dla mnie.
źródło
po prostu dodaj nowy styl:
i użyj go:
źródło
to wszystko cieszy kodowanie ...
źródło