如何增加旋转框列表项字体大小?

33

这是我的旋转器代码:

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);

这是我创建下拉框的布局文件的一部分:

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

这是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>

注意:我不想要一个 simple_spinner_dropdown_item

我只是想增加列表项的大小。我该怎么做?

5个回答

69

将以下xml内容保存为spinner_layout.xml文件并存放在layout文件夹中

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

更改所需的文本大小,使用以下适配器代码进行填充。

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);

3
选中后增加微调器项目的大小。 - divaNilisha
2
...但不包括项目。例如:项目是比萨饼、汉堡包、三明治等,它们的字体大小不会增加,但在选择后,显示在微调框中的值会增加。 - divaNilisha
将Spinner的android:layout_width属性设置为“fill_parent”。 - V.J.
你能解决这个问题吗?https://dev59.com/82PVa4cB1Zd3GeqP41zz - divaNilisha

32

仅通过XML

只是为了帮助其他人,以防他们在XML中静态设置Spinner项。

如果您正在使用XML设置Spinner条目,即使用android:entries,则可以使用以下两个主题设置调整文本大小和其他属性:

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>

1
很好的想法,但是在我的2.3.x设备上无法运行。 - rekire
3
有人知道为什么在Spinner中直接设置样式不起作用吗? <Spinner ... style="@sytle/spinnerItemStyle" /> - Grzegorz Dev
4
我很喜欢这个想法。我在 styles.xml 和 v11\styles.xml 中都尝试过这段代码,并在 Android 4.1 模拟器和 Android 4.2 设备上进行了测试。但是它在两者上都没有生效。我想知道我漏掉了什么。 - Hong
1
它是否为应用程序中的所有Spinner设置了文本大小?有什么方法可以使其适用于某些Spinner(通过XML),而不是全部? - Califf
Spinner是一个ViewGroup,这就是为什么Spinner的样式不会像我们希望的那样影响文本的原因。TextView由适配器动态创建,与Spinner的样式无关。 - joshuanapoli
显示剩余3条评论

3

以上解决方案都是在xml中硬编码的。

还有一种可行的解决方案可以通过编程来改变它。 https://dev59.com/Ym035IYBdhLWcg3wMNGW#11494962 获取TextView之后,你可以随意更改它,例如更改字体大小。

你的代码应该像这样:

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);

1
private OnItemSelectedListener spinner = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

       ((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK);
       ((TextView) parent.getChildAt(0)).setTextSize(10);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
};

0

如果你只想增加下拉菜单的大小,使其更易触摸,那么你可以简单地将 simple_spinner_item 更改为 simple_spinner_dropdown_item

 ArrayAdapter.createFromResource(this, R.array.item_array, android.R.layout.simple_spinner_dropdown_item);
                                                                       ---------------------------^

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接