J'utilise la liaison de données Android et dans le cadre de cela, j'ai un spinner avec des éléments (tableau déclaré dans strings.xml) comme
android:entries="@string/items"
Maintenant, je voudrais changer la couleur du texte et la taille des éléments déroulants. Je veux faire cela sans créer une mise en page distincte pour l'élément et l'utiliser via java (en passant la mise en page de l'élément à l'adaptateur de tableau et en définissant cet adaptateur sur le spinner).
J'ai essayé de nombreuses façons et j'ai cherché partout mais n'a pas trouvé de solution appropriée.
Toute aide est appréciée.
3 Réponses :
Vous pouvez créer un style et le définir sur spinner via xml
<style name="customStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner"> <item name="android:textColor">#000</item> <item name="android:textSize">12dp</item> </style>
définir customStyle
sur votre spinner
Créez simplement un nouveau xml avec une vue de texte et ses propriétés:
my_spinner.xml
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.my_spinner,data); spinner.setAdapter(adapter);
Luego set el nuevo xml en el ArrayAdapter
:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="12sp" android:textColor="#f51111" />
Vous devez utiliser android.support.v7.widget.AppCompatSpinner
.
<style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner"> <item name="android:paddingStart">0dp</item> <item name="android:paddingEnd">0dp</item> <item name="android:textColor">@color/white</item> <item name="android:backgroundTint">@color/red</item> <item name="android:textSize">14sp</item> </style>
Voici le style à mettre dans styles.xml
<android.support.v7.widget.AppCompatSpinner style="@style/Widget.AppCompat.Spinner.Underlined" android:theme="@style/Spinner" android:entries="@array/special_fx_arrays" android:textSize="@dimen/text_size_normal"/>
Réponse incroyable, d'autant plus que vous n'avez rien à implémenter par programme. Une chose à noter, cependant, est que cela ne fonctionnera que lors de l'utilisation de android: theme
, car l'utilisation du style
ne fonctionne pas pour toutes les propriétés, et vice versa. Vous pouvez toujours utiliser les deux en même temps ( thème
et style
) pour vous assurer que toutes les propriétés sont correctement remplacées. J'espère que cela aide!