スピナーリストアイテムのフォントサイズを大きくするにはどうすればよいですか?
これは私のスピナーのコードです:
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
。
リスト項目のサイズを増やしたいだけです。どうやってやるの?
以下の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);
XML経由のみ
XMLでスピナーエントリを静的に設定している場合に役立つように
上記の回答は、コードでSpinnerを作成している場合に機能しますが、XMLでSpinnerエントリを設定している場合、つまりAndroid:entries
を使用している場合は、テキストサイズやその他の属性を調整できます次の2つのテーマ設定:
あなたの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>
上記のソリューションはすべてxmlにハードコーディングされています。
プログラムで変更できる代替ソリューションがあります。 https://stackoverflow.com/a/11494962/508971 TextViewを取得したら、たとえばフォントサイズを変更するなど、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);
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) {
}
};
サイズを大きくしたいだけの場合、ドロップダウンがタッチ可能である場合は、単にsimple_spinner_itemをsimple_spinner_dropdown_itemに変更できます。
ArrayAdapter.createFromResource(this, R.array.item_array, Android.R.layout.simple_spinner_dropdown_item);
---------------------------^