2012-05-02 109 views
27

这是我的微调代码:如何增加微调项目的字体大小?

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

我只是想增加大小。我怎样才能做到这一点?

回答

61

保存下面的XML作为spinner_layout.xml布局文件夹

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

改变您希望TEXTSIZE。 并使用下面的适配器代码来填充它。

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

这是增加微调项目的大小后选定 – divaNilisha

+0

看到我更新的答案。 –

+0

...但不是项目。例如:项目是披萨,汉堡,三明治等,他们没有增加字体大小,但选择后,它显示在微调值显示的值增加 – divaNilisha

28

通过XML只有

只是为了帮助别人的情况下,他们都是静态设置在XML的微调项。

上述答案的工作,如果你通过代码创建微调但如果你通过XML,即使用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

+0

@rekire很高兴知道。我测试了4+。这太糟糕了,因为我觉得它更干净。 –

+3

如果直接在微调器中设置样式,任何人都知道为什么它不起作用?

2

上述解决方案都很难在XML编码。

有一个替代解决方案,它允许您以编程方式更改它。 https://stackoverflow.com/a/11494962/5089713 一旦你有了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); 
0

如果你只是想增加大小,即下拉是好的可触摸,那么你根本就改变simple_spinner_itemsimple_spinner_dropdown_item

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