Comment augmenter la taille de la police de l'élément spinner?

C'est mon code spinner:

Spinner food = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> foodadapter = ArrayAdapter.createFromResource(
        this, R.array.item_array, android.R.layout.simple_spinner_item);
foodadapter.setDropDownViewResource(android.R.layout.simple_spinner_item);        
food.setAdapter(foodadapter);

Ceci est une partie du fichier de mise en page où j'ai décrit le spinner:

<Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/textView1" />

C'est le item_array:

<resources>
    <string name="item_picker">Select an iten</string>
    <string-array name="item_array">
        <item>Pizza</item>
        <item>Burger</item>
        <item>Sandwiches</item>
        <item>Bread</item>
        <item>Pastries</item>
        <item>Snackers</item>
    </string-array>
</resources>

Note: Je ne veux pas de simple_spinner_dropdown_item.

Je veux juste augmenter la taille. Comment puis-je le faire?

30
demandé sur honk 2012-05-02 12:02:45

4 réponses

Enregistrez le xml ci-dessous sous spinner_layout.xml dans le dossier de mise en page

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/spinnerTarget"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textColor="#000000"
          android:textSize="13sp"
/>

Modifiez la taille de texte que vous voulez. et utilisez le code de l'adaptateur ci-dessous pour le remplir.

Spinner food = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> foodadapter = ArrayAdapter.createFromResource(
            this, R.array.item_array, R.layout.spinner_layout);
foodadapter.setDropDownViewResource(R.layout.spinner_layout);
food.setAdapter(foodadapter);
64
répondu V.J. 2012-05-02 08:21:00

Via XML uniquement

juste pour aider les autres au cas où ils définiraient statiquement leurs entrées Spinner en XML.

Les réponses ci-dessus fonctionnent si vous créez votre Spinner via le code mais si vous définissez vos entrées Spinner via XML, c'est-à-dire en utilisant android:entries, vous pouvez ajuster la taille du texte et d'autres attributs avec les deux paramètres de thème suivants:

Dans votre res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppBaseTheme" parent="android:Theme.Holo">
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">

        <!-- For the resting Spinner style -->
        <item name="android:spinnerItemStyle">
            @style/spinnerItemStyle
        </item> 

        <!-- For each individual Spinner list item once clicked on -->
        <item name="android:spinnerDropDownItemStyle">
            @style/spinnerDropDownItemStyle
        </item>

    </style>

    <style name="spinnerItemStyle">
        <item name="android:padding">10dp</item>
        <item name="android:textSize">20sp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <style name="spinnerDropDownItemStyle">
        <item name="android:padding">20dp</item>
        <item name="android:textSize">30sp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

</resources>
30
répondu Joshua Pinter 2014-04-11 10:05:01

Les solutions ci-dessus sont toutes codées en dur dans le xml.

Il existe une solution alternative qui vous permet de la modifier par programmation. https://stackoverflow.com/a/11494962/5089713 Une fois que vous avez le TextView, vous pouvez faire n'importe quoi avec, par exemple changer la taille de la police.

Votre code ressemble alors à

Spinner food = (Spinner) findViewById(R.id.spinner1);

CharSequence[] strings = getActivity().getResources().getTextArray(R.array.item_array);
    ArrayAdapter<CharSequence> foodadapter = new ArrayAdapter<CharSequence>(getActivity(), android.R.layout.simple_spinner_item, strings){
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view =super.getView(position, convertView, parent);
            TextView textView=(TextView) view.findViewById(android.R.id.text1);
            // do whatever you want with this text view
            textView.setTextSize(20);
            return view;
        }
    };

foodadapter.setDropDownViewResource(android.R.layout.simple_spinner_item);        
food.setAdapter(foodadapter);
2
répondu Diiiiii 2017-05-23 12:10:36

Si vous voulez seulement augmenter la taille, que la liste déroulante est bonne palpable, alors vous pouvez simplement changer le simple_spinner_item à simple_spinner_dropdown_item :

 ArrayAdapter.createFromResource(this, R.array.item_array, android.R.layout.simple_spinner_dropdown_item);
                                                                       ---------------------------^
0
répondu Sean Stayn 2018-01-20 13:44:05