studio fondo color cambiar android spinner android-spinner

android - studio - Cambiar el color de fondo del girador pero mantener la flecha



cambiar color android studio (10)

Aquí está el código de spinner personalizado. Por favor compruébalo y dime. Todavía no he probado esto. Así que por favor infórmeme después de verificar esto si resuelve su problema.

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)); }

Aquí está el drawable (spinner_background.xml) para crear el fondo de spinner.

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

Editar:

por favor revisa este enlace que te da una idea para hacer. Personaliza el fondo del girador

O

puedes hacer algo como esto

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

He leído varias cosas al respecto pero no puedo encontrar lo que necesito. Quiero mantener la flecha gris, pero quiero eliminar la barra horizontal del estilo predeterminado y tener un fondo blanco. ¿Tienes alguna idea de cómo puedo hacer esto?

Esto es lo que tengo ahora (estilo de ruleta predeterminado):

Esto es lo que quiero:


Creo que la mejor manera sin hacer diseños complejos es esta:

¡Usa este xml para tu fondo de spinner y estás listo para empezar!

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"


Hice una pequeña modificación basada en la respuesta de @Mansur Khan.

No tenemos que agregar un ImageView en este caso porque el spinner ya tiene una flecha triangular. Por lo tanto, verifique el código a continuación:

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


Hola, en lugar de incluir el componente Spinner en los diseños principales, como LinearLayout, RelativeLayout, etc., que aumenta el análisis del diseño, simplemente crea un dibujante llamado spinner_bg.xml en la carpeta dibujable.

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

Establece spinner_bg como fondo de tu spinner y funciona como encanto:

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


Para el registro, encontré una solución fácil: Envuelva su spinner en un diseño relativo y agregue una imagen:

<?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 buena forma de personalizar spinners y cualquier otro control de Android es usar el sitio de Android Asset Studio y elegir el generador de colores Holo de Android . Esto creará todos los activos que pueda necesitar, incluido el "subrayado". También genera los archivos XML que implementan los cambios.

Una vez que descargue el archivo ZIP de ese sitio, solo copie las imágenes y los archivos XML en su proyecto.

Luego puede editar los archivos de imagen requeridos 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 obtener una explicación más completa del proceso y ver algunos de los archivos XML de muestra, consulte mi respuesta relacionada:

  • Cambiar el color del triángulo pequeño en el spinner en Android

Una solución simple que no requiere que crees tu propio drawable para la flecha es envolver el spinner con RelativeLayout , y establecer el color de fondo en el RelativeLayout , no en el spinner:

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


Utilizar esta:

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

y tu clase debería implementar OnItemSelectedListener.


debajo del diseño se creará un fondo en el panel giratorio con la flecha desplegable del color del deseo

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

edit_text_rounded_shape que proporciona el color de fondo y la esquina redondeada

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


<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:background="@drawable/spinner_bg" />

este trabajo para mi