レイアウトxmlファイルにスピナーを作成し、このスピナーに文字列配列を設定しています。スピナーのテキストスタイルを変更しても、テキストは変更の影響を受けません。
スピナーにテキストがないため、テキストスタイルを変更できず、スピナーに表示されるテキストビューのスタイルを変更する必要があることをGoogleグループで読みました。しかし、どうすればそれができますか。できれば私のxmlファイルで。
スピナーをサポートするアダプターを作成するときに、スピナーアイテムのレイアウトを設定できます。
spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));
Some_text_viewを好きなようにスタイル設定できます。
<TextView Android:id="@+id/some_text_view" Android:textStyle="bold" />
前の人が指定したように、SpinnerコンポーネントがあるメインのXMLレイアウトファイルでは実行できません。
上記の答えは素晴らしいですが、ご存知のようにGoogleのベストプラクティスを使用したい場合は...すべてにスタイルを使用する...次のように3つの「簡単な」ステップで実行できます。
ステップ1:スピナーのアイテムを探すために、レイアウトフォルダーの下に追加のファイルが必要です。
<?xml version="1.0" encoding="utf-8"?>
<TextView
Android:id="@+id/textViewSpinnerItem"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="@style/SpinnerTextViewItem"
xmlns:Android="http://schemas.Android.com/apk/res/Android" />
このファイルに名前を付けます:spinner_item_text.xml
ステップ2:次に、スピナーにアイテムの配列を入力するときのアクティビティクラスで:
adapter = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item_text, items);
spinner.setAdapter(adapter);
R.layout.spinner_item_textリソースは独自のRのファイルにあることに注意してください。
ステップ3: valuesフォルダーの下で、ファイルstyles.xmlを作成または使用します(既に作成されている場合があります)。必要なスタイルエントリは次のようになります。
<style name="SpinnerTextViewItem" parent="@Android:style/Widget.TextView" >
<item name="Android:textSize" >8dp</item>
<item name="Android:textStyle" >bold</item>
</style>
以上です!
これまでのところ、テキストのサイズ、スタイル、色などをすべてstyles.xmlファイルに入れておくと、保守が簡単になります。
@Cyril REALの優れた回答のフォローアップとして、Android:entries
を介してスピナーにデータを入力する場合に、XMLを介してスピナーjustのスタイルを設定する方法の完全な実装を以下に示します。
上記の回答は、コードを介してSpinnerを作成している場合は機能しますが、XMLを介して、つまりAndroid:entries
を使用してSpinnerエントリを設定している場合は、次のことができます。次の2つのテーマ設定を使用して、テキストサイズとその他の属性を調整します。
<?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でスピナーのテキストをカスタマイズできます。
独自のスタイルで、:を定義します。
<item name="Android:spinnerItemStyle">@style/yourStyleForSpinnerItem</item>
このスタイルも定義します:
<style name="yourStyleForSpinnerItem">
//stuff you want for the item style
</style>
Javaコードでスピナーのアダプターをインスタンス化すると、デフォルトのAndroid.R.layout.simple_spinner_itemを使用できます。
このような回避策が必要ない場合は、簡単な方法があります。スピナーからテキストビューを取得し、そのパラメーターを変更します。
TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal
スピナーでポップアップビューの背景を変更するだけの場合は、次のメソッドを呼び出します。
spinner.setPopupBackgroundResource(R.color.pa_md_white);