Android将箭头图像添加到微调器

我创build了一个可用于绘制微​​调的背景。 我想现在,但在这个背景下的箭头图像。 我尝试过的东西,如android:drawableRight =“arrowimage”,但这似乎并没有显示任何东西。 有谁知道我可以如何在我的自定义背景中包含一个图像的微调?

Solutions Collecting From Web of "Android将箭头图像添加到微调器"

使用任何名称(例如spinner_bg.xml)在可绘制文件夹中创buildXML,并添加以下行

<?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" /> 

这对我有用。 您可能会缺less默认状态。 没有发布你的代码很难说。

 <!-- 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> 

当我使用JellyBean(4.2.2)或者Kitkat(4.4)时,Aniruddha的解决scheme对我来说工作得很好。 但不幸的是,在棉花糖(6.0)我有一个例外,可能的原因在这里解释: 使用drawable资源

我最终只是制作一个技巧,并将微调与ImageView的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> 

设置您的图像图标在微调:

 <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" />