レイアウトxmlファイルにスピナーを作成し、このスピナーに文字列配列を設定しています。スピナーのテキストスタイルを変更しても、テキストは変更の影響を受けません。
スピナーにはテキストがないため、テキストスタイルを変更できず、スピナーに表示されるテキストビューのスタイルを変更する必要があることをGoogleグループで読みました。しかし、どうすればそれができますか。できれば私のxmlファイルで。
私の前任者が指定したように、Spinner コンポーネントがあるメインの XML レイアウト ファイルでは実行できません。
上記の答えは素晴らしいですが、ご存知のように、すべてにスタイルを使用するために Google のベスト プラクティスを使用したい場合は、次の 3 つの「簡単な」手順で実行できます。
ステップ 1:レイアウト フォルダーの下に、Spinner のアイテムを探す追加のファイルが必要です。
<?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
.
コードでSpinnerを作成している場合、上記の回答は機能しますが、XML 経由で Spinner エントリを設定している場合、つまり を使用しているandroid:entries
場合は、次の 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>
Spinner をサポートする Adapter を作成すると、Spinner アイテムのレイアウトを設定できます。
spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));
some_text_view を好きなようにスタイルできます。
<TextView android:id="@+id/some_text_view" android:textStyle="bold" />
実際、スピナーのテキストは 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 を取得し、そのパラメーターを変更します。
TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal