studio personalizar android android-layout imageview android-spinner

personalizar - android loading spinner



Android aƱade la imagen de la flecha al hilandero (5)

Configure su icono de imagen en Spinner:

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

He creado un dibujable de fondo que utilizo para un hilandero. Me gustaría ahora, pero una imagen de flecha dentro de este fondo. He intentado cosas como android: drawableRight = "arrowimage", pero esto no parece mostrar nada. ¿Alguien sabe cómo puedo incluir una imagen en mi fondo personalizado para un hilandero?


Cree un XML en una carpeta dibujable con cualquier nombre, por ejemplo, spinner_bg.xml y agregue las siguientes líneas

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

Agregue las siguientes líneas a su styles.xml que está dentro de la carpeta de valores

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

Ahora agrega este estilo a tu hilandero como

<Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/spinner_style" android:popupBackground="#cccccc" />


Esto funciona para mí. Puede que te falte el estado predeterminado. Sin publicar tu código es difícil decirlo.

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


Esto me ha funcionado:

<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Light" android:spinnerMode="dropdown" />


La solución de Aniruddha funcionó bien para mí, cuando usé JellyBean (4.2.2) o Kitkat (4.4). Pero desafortunadamente en Marshmallow (6.0) tengo una excepción, posible causa explicada aquí: Uso de recursos dibujables

Terminé haciendo un truco y coloqué el spinner en LinearLayout con ImageView de esta manera:

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