18

レイアウトxmlファイルにスピナーを作成し、このスピナーに文字列配列を設定しています。スピナーのテキストスタイルを変更しても、テキストは変更の影響を受けません。

スピナーにはテキストがないため、テキストスタイルを変更できず、スピナーに表示されるテキストビューのスタイルを変更する必要があることをGoogleグループで読みました。しかし、どうすればそれができますか。できれば私のxmlファイルで。

4

6 に答える 6

29

私の前任者が指定したように、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 ファイルに入れると非常に便利で、維持しやすくなっています。

于 2011-10-19T01:56:02.883 に答える
24

XML 経由のみ

@Cyril REAL の優れた回答のフォローアップとして、スピナーandroid:entries.

コードで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>
于 2014-01-16T22:37:04.017 に答える
19

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" />
于 2010-07-08T15:47:32.470 に答える
9

実際、スピナーのテキストは 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 を使用できます。

于 2012-01-15T16:55:55.080 に答える
1

このような回避策が必要ない場合は、簡単な方法があります。スピナーから textview を取得し、そのパラメーターを変更します。

TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal
于 2014-02-20T20:10:55.863 に答える