¿Cómo cambiar el diseño y el color del fondo del girador para Android?

Estoy desarrollando una aplicación en la que necesito cambiar el diseño del fondo del hilandero para que coincida con el color de fondo. Investigué y descubrí que necesito crear una imagen de 9 parches. He hecho la creación de la imagen de 9 parches y la utilicé en la aplicación, pero parece más grande que la ruleta normal y tampoco pude ver el botón desplegable en la ruleta.

Estoy tan feliz de que me brinden un claro tutorial desde que empiece a crear la imagen de 9 parches para Spinner y la usen en la aplicación.

El girador se ve como

Código para el Spinner

 

Puede establecer el color de fondo de los rotuladores en xml de esta manera:

 android:background="YOUR_HEX_COLOR_CODE" 

y si usa el menú desplegable con su spinner, puede establecer su color de fondo de esta manera:

 android:popupBackground="YOUR_HEX_COLOR_CODE" 

Puede cambiar el color de fondo y el icono desplegable como hacer de esta manera

Paso 1: en la carpeta dibujable, crea background.xml para border of spinner.

      //edited 

Paso 2: para el diseño del diseño de la ruleta use este icono desplegable o cualquier imagen drop.pnj usa esta imagen como

      

Finalmente se ve como la imagen de abajo y se puede hacer clic en todas partes en el área redonda y sin necesidad de escribir haga clic en Lister para imageView.

Para más detalles, puedes ver aquí

enter image description here

A pesar de que es una publicación anterior, pero me encontré con ella mientras buscaba el mismo problema, así que pensé que iba a agregar mis dos centavos también. Aquí está mi versión del fondo de Spinner con la flecha DropDown. Solo el fondo completo, no solo la flecha.

Así es como se ve … Captura de pantalla de Spinner usando spinner_bg.xml

Aplicar en spinner como …

  

spinner_bg.xml

                        

@color/InputBg debe reemplazarse por el color que desee como fondo.

Primero llena el fondo con el color deseado. Luego, una lista de capas hija forma un cuadrado y la gira 45 grados y luego un segundo rectángulo con color de fondo cubre la parte superior del cuadrado girado, lo que le da el aspecto de una flecha hacia abajo. (No se requiere un trazo adicional en un rectángulo girado)

Necesitarás crear un nuevo diseño personalizado para tus elementos de giro, así, lo nombraré:

spinner_item.xml:

  

Luego, en su statement de spinner, necesita hacer que su spinner use el nuevo diseño en el adaptador:

 ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.layout.spinner_item, YOUR_SPINNER_CONTENT); spinner.setAdapter(adapter); 

Para personalizar elementos de la lista desplegable, necesita crear otro diseño, lo llamaré spinner_dropdown_item.xml:

  

y luego en el adaptador:

 ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.layout.spinner_item, YOUR_SPINNER_CONTENT); adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); spinner.setAdapter(adapter); 

Como señaló Jakob , android:popupBackground es el atributo clave para el menú desplegable (estado abierto del Spinner), pero en lugar de usar solo un color, obtuve los mejores resultados con un parche de 9 paneles como este:

enter image description here
menu_dropdown_panel.9.png

Tenga en cuenta que es muy fácil generar esta imagen de 9 parches para el color de fondo de su elección, por ejemplo, utilizando esta herramienta en línea como expliqué en esta respuesta .

Entonces, mi definición de Spinner XML se ve así:

  

Y el resultado:

(Para las fonts personalizadas, como en la captura de pantalla anterior, también se necesita un SpinnerAdapter personalizado ).

Funciona al menos en Android 4.0+ (API nivel 14+).

enter image description here

Código de giro

  

bg_spinner.xml

                           

código spinner:

  

spinner_selector.xml

         

spinner_disable.xml

                                      

spinner_clicked.xml

                                      

spinner_enable.xml

                                      

funciona bien sin imágenes de nueve parches. api 21+ enter image description here

spinner_selector.xml

         

spinner_enabled.xml

                         

spinner_disabled.xml

                         

spinner_focused.xml

                         

funciona bien sin imágenes de nueve parches. api 10+ enter image description here

Intenté las muestras anteriores pero no funcionó para mí. La solución más simple funciona para mí increíble:

    
     

Necesita trabajar con el fondo transparente en un spinner.

spinner_enable.xml

                               

spinner_disable.xml

                               

spinner_selector.xml

        

Imagen de muestra

Cuando configura el color de fondo del girador con android:background="@color/your_color" la flecha predeterminada de su girador desaparecerá

Y también debe agregar ancho y altura fijos a la rueda giratoria para que pueda mostrar todo el contenido de la ruleta.

así que encontré una manera de hacerlo, al igual que la imagen de arriba.

Escriba su código de spinner dentro de un diseño de marco, aquí no necesita usar una vista de imagen separada para mostrar el ícono desplegable.

      

Crea un nuevo xml para el fondo de diseño del cuadro o establece android:background="@color/your_color"

custom_spn_background.xml

     

Solo usa este código

             

Y este es el fondo que utilicé …

    

y aquí vamos esta es la vista que archivo … enter image description here