Spinner text size does not change?

2019-01-24 13:49发布

I could not change spinner's textsize or colour with the code below:

<Spinner 
    android:id="@+id/spinner1"
    style="@style/submitspinner"
    android:layout_weight="2"
    android:entries="@array/a_code"
    android:prompt="@string/p_code" />

style:

<style name="submitspinner" parent="@android:TextAppearance.Widget.TextView.SpinnerItem">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_margin">10sp</item> 
    <item name="android:textColor">@android:color/holo_blue_dark</item>
    <item name="android:textSize">@dimen/pt</item> 
</style>

It looks same, how can I increase textsize and change colour of the spinner?

3条回答
太酷不给撩
2楼-- · 2019-01-24 14:23

Via XML Only

Just to help others in case they are statically setting their Spinner entries in XML.

The above answers work if you're creating your Spinner via code but if you're setting your Spinner entries via XML, i.e. using android:entries, then you can adjust the text size and other attributes with the following two theme settings:

In your 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>
查看更多
smile是对你的礼貌
3楼-- · 2019-01-24 14:27

customize your spinner

here is a good tutorial i once used

http://stephenpengilley.blogspot.be/2013/01/android-custom-spinner-tutorial.html

it has everything u need.

also in your 'style' u have:

<item name="android:layout_margin">10sp</item>

change it to 10dp

sp = text size

here u can find more about units to measure

What is the difference between "px", "dp", "dip" and "sp" on Android?

查看更多
我想做一个坏孩纸
4楼-- · 2019-01-24 14:38

What you should do for custom Spinners is create a single XML that will act as your template for the string in the Spinner, like so:

<?xml version="1.0" encoding="UTF-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/standard_spinner_format"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="@dimen/pt"
   android:textColor="@android:color/holo_blue_dark"/>

Then when you create your Spinner adapter in java do the following:

ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(getActivity(), 
          R.array.my_spinner_array, R.layout.custom_xml_spinner_layout); //change the last argument here to your xml above.
    typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
查看更多
登录 后发表回答