2
votes

Modifier la couleur et la taille du texte des éléments de la liste déroulante

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.


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes

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"
/>


0 commentaires

2
votes

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"/>


1 commentaires

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!