not item first developer android android-spinner

android - item - Cambiar el icono desplegable de Spinner



spinner android developer (6)

Las soluciones que encontré para cambiar el ícono desplegable del selector giratorio fueron:

1. crear un dibujo personalizable

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="false" /> <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="true" /> <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="false" android:state_pressed="true" /> <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" /> </selector>

2. Establecer el dibujable como el fondo de giro:

<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:background="@drawable/custom_spinner_icon" android:gravity="center" android:paddingBottom="8dp" android:paddingTop="8dp" android:textColor="@color/textcolorprimary" />

Y el resultado es:

Como puede ver, esta no es una solución aceptable ya que el ícono debe estar alineado a la derecha y no estirado.

¿Qué puedo hacer para que el icono no se estire y alinee correctamente?

EDITAR

Como no hay soluciones que funcionen, supongo que debo especificar mi pregunta. Así es como se ve mi Spinner usando el tema estándar:

<Spinner android:id="@+id/products_download_spinner_language" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:gravity="center" android:paddingBottom="8dp" android:paddingTop="8dp" android:textColor="@color/textcolorprimary" android:theme="@android:style/Theme.Holo.Light.DarkActionBar" />

Y todo lo que quiero (realmente no es mucho, supongo) es cambiar la flecha. No quiero que se muestre esa flecha en la esquina inferior derecha, quiero que esta flecha se muestre centrada verticalmente a la derecha:

Y cada solución que he probado hasta ahora:

Spinner Dropdown Arrow

¿Cómo configurar la flecha desplegable en spinner?

simplemente no estabamos trabajando. Habían estirado los íconos o faltaba la línea de fondo o algo más salió totalmente mal. Solo quiero otra flecha.


¿Has intentado definir un fondo personalizado en xml? disminuyendo el ancho del fondo del Spinner que está haciendo que tu flecha se vea así.

Defina una lista de capas con un fondo de rectángulo y su ícono de flecha personalizado:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/color_white" /> <corners android:radius="2.5dp" /> </shape> </item> <item android:right="64dp"> <bitmap android:gravity="right|center_vertical" android:src="@drawable/custom_spinner_icon"> </bitmap> </item> </layer-list>


Intenta aplicar el siguiente estilo a tu hilandero usando

style="@style/SpinnerTheme"

// Spinner Style :

<style name="SpinnerTheme" parent="android:Widget.Spinner"> <item name="android:background">@drawable/bg_spinner</item> </style>

// bg_spinner.xml Reemplaza arrow_down_gray con tu flecha

<?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="0.33dp" android:color="#0fb1fa" /> <corners android:radius="0dp" /> <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" /> </shape> </item> <item android:right="5dp"> <bitmap android:gravity="center_vertical|right" android:src="@drawable/arrow_down_gray" /> </item> </layer-list> </item> </selector>


Necesitas crear un fondo personalizado como este:

<?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/drop_down"/> // you can place your dropdown image </item> </layer-list> </item> </selector>

Entonces crea estilo para spinner así:

<style name="spinner_style"> <item name="android:background">@drawable/YOURCUSTOMBACKGROUND</item> <item name="android:layout_marginLeft">5dp</item> <item name="android:layout_marginRight">5dp</item> <item name="android:layout_marginBottom">5dp</item> </style>

Después de eso aplica este estilo a tu hilandero.


Para esto puedes usar .9 Patch Image y simplemente establecerlo en segundo plano.

android:background="@drawable/spin"

Aquí te daré una imagen de .9patch. Intenta con esto.

Haga clic derecho en la imagen y haga clic en Guardar imagen como

establece el nombre de la imagen de esta manera: anyname.9.png y presiona guardar.

Disfruta .. Coading feliz. :)


Sin usar CUALQUIER menú desplegable usando su icono desplegable

<?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" /><!--For gradient background--> <stroke android:width="1dp" android:color="#FFF" /><!--For Border background--> <corners android:radius="0dp" /><!--For background corner--> <padding android:bottom="3dp" android:left="3dp" android:right="6dp" android:top="3dp" /><!--For padding for all sides--> </shape> </item> <item> <bitmap android:gravity="center|right" android:src="@drawable/ic_down_arrow" /> // Replace with your Icon </item> </layer-list> </item>


dummy.xml (recuerde que el tamaño de la imagen debe ser menor)

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <layer-list android:opacity="transparent"> <item android:width="60dp" android:gravity="left" android:start="20dp"> <bitmap android:src="@drawable/down_button_dummy_dummy" android:gravity="left"/> </item> </layer-list> </item> </selector>

fragmento de archivo de diseño ser como

<android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardUseCompatPadding="true" app:cardElevation="5dp" > <Spinner android:layout_width="match_parent" android:layout_height="100dp" android:background="@drawable/dummy"> </Spinner> </android.support.v7.widget.CardView>

haga clic para ver la imagen de diseño de resultado