スピナーに使用する背景ドローアブルを作成しました。この背景の中に矢印画像があります。 Android:drawableRight = "arrowimage"のようなものを試しましたが、何も表示されないようです。スピナーのカスタム背景に画像を含める方法を知っている人はいますか?
spinner_bg.xmlなどの任意の名前で描画可能なフォルダーにXMLを作成し、次の行を追加します
<?xml version="1.0"
encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<layer-list>
<item>
<shape>
<gradient Android:angle="90"
Android:endColor="#ffffff"
Android:startColor="#ffffff"
Android:type="linear" />
<stroke Android:width="1dp"
Android:color="#504a4b" />
<corners Android:radius="5dp" />
<padding Android:bottom="3dp"
Android:left="3dp"
Android:right="3dp"
Android:top="3dp" />
</shape>
</item>
<item>
<bitmap Android:gravity="bottom|right"
Android:src="@drawable/spinner_ab_default_holo_dark_am" />
// you can use any other image here, instead of default_holo_dark_am
</item>
</layer-list>
</item>
</selector>
値フォルダー内にあるstyles.xmlに次の行を追加します
<style name="spinner_style" >
<item name="Android:background">@drawable/spinner_bg</item>
<item name="Android:layout_marginLeft">10dp</item>
<item name="Android:layout_marginRight">10dp</item>
<item name="Android:layout_marginBottom">10dp</item>
<item name="Android:paddingLeft">8dp</item>
<item name="Android:paddingTop">5dp</item>
<item name="Android:paddingBottom">5dp</item>
</style>
次に、このスタイルをスピナーに次のように追加します
<Spinner Android:id="@+id/spinner1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="@style/spinner_style"
Android:popupBackground="#cccccc" />
JellyBean(4.2.2)またはKitKat(4.4)を使用したとき、Aniruddhaのソリューションはうまくいきました。しかし、残念ながらマシュマロ(6.0)には例外があり、考えられる原因は次のとおりです: Drawable resources
最終的にはトリックを作成し、次のようなImageViewでSpinnerをLinearLayoutに配置しました。
<LinearLayout
Android:id="@+id/spinner_layout"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center">
<Spinner
Android:id="@+id/spinner"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/your_arrow_drawable"/>
</LinearLayout>
これは私のために動作します。デフォルト状態が欠落している可能性があります。コードを投稿せずに伝えることは困難です。
<!-- theme -->
<item name="Android:dropDownSpinnerStyle">@style/mySpinnerStyle</item>
<!-- style -->
<style name="mySpinnerStyle" parent="Android:Widget.Holo.Spinner">
<item name="Android:background">@drawable/mySpinner_background</item>
</style>
<!-- mySpinner_background -->
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="false"
Android:drawable="@drawable/mySpinner_disabled" />
<item Android:state_pressed="true"
Android:drawable="@drawable/mySpinner_pressed" />
<item Android:state_pressed="false" Android:state_focused="true"
Android:drawable="@drawable/mySpinner_focused" />
<item Android:drawable="@drawable/mySpinner_default" />
</selector>
画像アイコンをスピナーに設定します。
<item>
<layer-list>
<item>
<color Android:color="@Android:color/white" />
</item>
<item>
<bitmap Android:gravity="center_vertical|right" Android:src="@drawable/down_arrow" />
</item>
</layer-list>
</item>
これは私のために働いています:
<Spinner
Android:id="@+id/spinner"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Light"
Android:spinnerMode="dropdown" />