Cambie el color de fondo del spinner pero mantenga la flecha
He leído varias cosas sobre él pero no puedo encontrar lo que necesito. Quiero mantener la flecha gris pero quiero quitar la barra horizontal del estilo predeterminado y tener un fondo blanco. ¿Tienes alguna idea de cómo puedo hacer esto?
Aquí está lo que tengo ahora (estilo del hilandero por defecto):
- Uso correcto de un Spinner, siguiendo las directrices de diseño del material
- Android Spinner Gravity No funciona
- El girador se desplaza hacia arriba cuando está encendidoPulse o desplaza lentamente
- Android onListItemClick no funciona cuando los hilanderos se encuentran dentro de listrow
- Android: ¿Cómo vincular a spinner a la lista de objetos personalizados?
Esto es lo que quiero:
- Spinner que agrega la matriz de la secuencia en la selección del artículo cómo puede conseguir el valor relacionado artículo en androide
- Establecer foco en el hilador cuando se selecciona en android
- Spinner Tamaño Pequeño
- ¿Cómo se puede utilizar un marcador de posición de carga que es un spinner animado con cargadores de imágenes como Glide, Picasso etc?
- Android hiladora ABIERTA con un solo clic de botón
- Spinner popup color de fondo en Android 5.0
- Modificar el tamaño de un Android Spinner Drop down tamaño de la parte?
- ¿Cómo cambiar el color de la fuente Spinner?
Para el registro, encontré una solución fácil: Envuelva su hilandero en un diseño relativo y añada una imagen:
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/borderbottom_white"<!-- white background with bottom border --> android:layout_marginTop="15dp" > <Spinner android:id="@+id/postfield_category" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" android:background="@null" android:minHeight="0dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="@drawable/arrowspinner" /> </RelativeLayout>
Hice una pequeña modificación basada en la respuesta de @Mansur Khan.
No tenemos que añadir un ImageView en este caso porque el fondo de spinner es transparente ya. Compruebe tan el código abajo:
<RelativeLayout android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/bg_spinner"> <Spinner style="@style/Widget.AppCompat.DropDownItem.Spinner" android:layout_width="match_parent" android:layout_height="70dp" android:id="@+id/sign_up_country" /> </RelativeLayout>
Aquí está la captura de pantalla
Antes de:
Después:
Bg_spinner.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="8dp" android:bottom="8dp"> <shape> <solid android:color="@android:color/white" /> <corners android:radius="2dp"/> <stroke android:width="1dp" android:color="#EBEBEB" /> <padding android:top="16dp" android:bottom="16dp" android:left="8dp" android:right="16dp"/> </shape> </item> </layer-list>
Una solución sencilla que no requiere que cree su propio dibujable para la flecha es envolver la ruleta con un RelativeLayout
y establecer el color de fondo en RelativeLayout
, no en el spinner:
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#f00" > <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
Utilizar esta:
yourspinner.setOnItemSelectedListener(this); @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ((TextView) yourspinner.getSelectedView()).setBackgroundColor(getResources() .getColor(R.color.your_color)); }
Y su clase debe implementar OnItemSelectedListener.
Una buena manera de personalizar los hiladores y cualquier otro control de Android es usar el sitio Android Asset Studio y elegir el generador de colores Android Holo . Esto creará todos los activos que pueda necesitar, incluyendo el "subrayado". También genera los archivos XML que implementan los cambios.
Una vez que descargue el archivo ZIP de ese sitio, simplemente copie las imágenes y los archivos XML en su proyecto.
A continuación, puede editar los archivos de imagen necesarios para eliminar el subrayado. Son archivos de 9 parches, llamados:
- Apptheme_spinner_default_holo_light.9.png
- Apptheme_spinner_disabled_holo_light.9.png
- Apptheme_spinner_focused_holo_light.9.png
- Apptheme_spinner_pressed_holo_light.9.png
Para una explicación más completa del proceso y para ver algunos de los archivos XML de ejemplo, consulte mi respuesta relacionada:
- Cambiar el color del pequeño triángulo en spinner en android
Aquí está el código de la ruleta personalizada. Por favor, echa un vistazo y dímelo. Aún no he probado esto. Así que por favor, infórmeme después de comprobar esto si soluciona su problema.
<Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/spinner_background" android:gravity="center" android:paddingRight="10dp" android:spinnerMode="dropdown" android:textColor="your text color" android:textSize="your text size" />
Aquí está el drawable (spinner_background.xml) para crear el fondo de spinner.
<?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="border color" /> <corners android:radius="3dp" /> </shape> </item> <item android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp"> <shape android:shape="rectangle" > <solid android:color="@android:color/white" /> <corners android:radius="3dp" /> </shape> </item> </layer-list>
Editar:
Compruebe por favor este acoplamiento que le da una idea a hacer. Personalizar el fondo de spinner
O
Usted puede hacer algo como esto.
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="spinner background image"> <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="arrow image" /> </RelativeLayout>
Debajo de la disposición creará un fondo en el hilandero con color del deseo
<LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".6" android:background="@drawable/edit_text_rounded_shape" android:gravity="center|center_vertical"> <Spinner android:id="@+id/spinerComanyName" android:layout_width="0dp" android:layout_height="wrap_content" android:padding="4dp" android:layout_weight=".6" android:layout_gravity="center" android:entries="@array/spinner_item" android:spinnerMode="dropdown" android:theme="@style/Spinner" /> </LinearLayout> <style name="Spinner"> <!-- Used for the bottom line when not selected / focused --> <item name="colorControlNormal">@color/black</item> <item name="colorControlActivated">@color/colorPrimary</item> <!-- colorControlActivated & colorControlHighlight use the colorAccent color by default --> </style>
Edit_text_rounded_shape que proporcionan el color de fondo y la esquina redondeada
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="@color/white"/> <stroke android:color="@color/grey"/> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape>
android:layout_alignParentRight="true" android:layout_width="@dimen/spinner_width" android:layout_height="wrap_content" android:id="@+id/spnLocation" android:entries="@array/labelFamily" android:layout_centerVertical="true" android:backgroundTint="@color/color_gray"
Este trabajo para mi
Hola en lugar de envolver el componente Spinner alrededor de Layouts de los padres como LinearLayout, RelativeLayout, etc., lo que aumenta el análisis de diseño, simplemente crea un drawable llamado spinner_bg.xml bajo una carpeta dibujable.
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:src="@drawable/icn_dropdown_arw" /> </item> </layer-list>
Establecer spinner_bg como el fondo de su hilandero y funciona como encanto:
<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:background="@drawable/spinner_bg" />
- ¿Cómo agrego un proyecto de biblioteca al Android Studio y lo uso? (Algunos pidieron que no entraran en vigor)
- Android – ¿Cómo obtener la ubicación actual (latitud y longitud)?