Android: No se puede diseñar el divisor de hilado

Estoy tratando de crear un tema para mi primera aplicación de Android, y me está conduciendo alrededor de la curva. Finalmente me las arreglé para averiguar cómo estilo de elementos en una lista desplegable, pero ahora no puedo cambiar el color de la división entre los elementos de la lista. He buscado preguntas similares sobre stackoverflow, y he intentado decenas de combinaciones, pero nada parece funcionar.

Aquí está mi archivo styles.xml (abreviado para mayor claridad):

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="android:Theme.Light"> <item name="android:spinnerStyle">@style/spinnerStyle</item> <item name="android:spinnerDropDownItemStyle">@style/spinnerDropDownItemStyle</item> <item name="android:dropDownListViewStyle">@style/spinnerListViewStyle</item> </style> <style name="spinnerStyle" parent="@android:style/Widget.Spinner"> <item name="android:background">@drawable/my_theme_spinner</item> </style> <style name="spinnerDropDownItemStyle" parent="@android:style/Widget.DropDownItem.Spinner"> <item name="android:background">@drawable/my_theme_spinner_item</item> <item name="android:paddingLeft">5dp</item> <item name="android:gravity">center_vertical</item> </style> <style name="spinnerListViewStyle" parent="@android:style/Widget.ListView.DropDown"> <item name="android:height">3dp</item> <item name="android:dividerHeight">3dp</item> <item name="android:divider">@color/divider</item> </style> </resources> 

No importa lo que hago, recibo un divisor 1dp gris claro entre los elementos (que apenas se puede ver con mi fondo de elemento de lista de colores claros) – ni la altura ni el color del divisor se ve afectado (también traté de configurarlo a un Estirable, también sin efecto). ¿Qué estoy haciendo mal?

Tengo una actividad muy simple con el Spinner y funciona para lo siguiente. La única diferencia que veo es que usted tiene un <item name="android:height">3dp</item> y no tengo eso en absoluto.

 <style name="TestSpinnerStyle" parent="android:style/Widget.ListView.DropDown"> <item name="android:divider">#ff0000</item> <item name="android:dividerHeight">5dp</item> </style> <style name="SampleTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:dropDownListViewStyle">@style/TestSpinnerStyle</item> </style> 

Y en mi Actividad tengo:

  Spinner spinner = (Spinner) findViewById(R.id.spinner); List<String> list = new ArrayList<String>(); list.add("list 1"); list.add("list 2"); list.add("list 3"); ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); spinner.setAdapter(dataAdapter); 

Y luego para el diseño principal tengo el siguiente XML:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, StylingActivity" /> <Spinner android:id="@+id/spinner" android:layout_width="250dp" android:layout_height="40dp" /> </LinearLayout> 

Aquí está la captura de pantalla

Actividad de muestra screnshot

Si no puede conseguir que funcione desde allí, puedo empujar todo el asunto a un reporte de github para usted.

Puede agregar una línea horizontal al diseño desplegable que utilice, lo que efectivamente crearía un divisor.

EDITAR

Algunas investigaciones adicionales encontraron esto:

Entonces respuesta

Lo que básicamente dice lo que usted muestra que está tratando de hacer por encima debe funcionar … aunque menciona el establecimiento de ese estilo en su tema de actividad y no menciona hacer eso.

El método de estilo en la respuesta aceptada funciona bien hasta que necesite dos hilanderos con diferentes colores divisores.

Aquí es lo que encontré funciona como una alternativa:

A) Establezca el atributo popupBackgroundColor en la hiladora al color que desea para el divisor. Esto coloreará el fondo del elemento de la lista entera (incluyendo el espacio que consideramos como el divisor).

B) Configure los adaptadores spinners dropDownViewResource para que sean un CheckedTextView con su atributo de fondo establecido en otro color (o un selector si desea que los elementos seleccionados tengan un color diferente). Esto anulará el color que establecimos en el paso a para todo excepto para el divisor. Efectivamente dándonos el resultado deseado.

Así que usted tendrá:

Drawable / spinner_dropdown_background_selector:

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

Layout / drop_down_item.xml:

 <?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:background="@drawable/spinner_dropdown_background_selector" android:textColor="@android:color/white" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" /> 

Su spinner definición:

 <Spinner ... android:popupBackground="@color/your_divider_color" ... /> 

Y, finalmente, la definición del adaptador de matriz:

 ArrayAdapter<String> dataAdapter = new ... dataAdapter.setDropDownViewResource(android.R.layout.drop_down_item); spinner.setAdapter(dataAdapter); 

Tenga en cuenta que la configuración de popupBackgroundColor no tiene efecto si la ruleta está en modo de diálogo .

  • Cómo aplicar estilo personalizado global a android.support.design.widget.TextInputEditText?
  • ¿Cómo conseguimos el tema de una actividad?
  • Establecer dinámicamente el color del tema
  • PreferenciaLa actividad y el tema no se aplican
  • ¿Cómo uso estilos de interfaz de usuario comunes en Android?
  • Cambio del icono de la barra de acciones
  • El cambio de tema no funciona en <4.0 como debería
  • Estilo de RecyclerView a nivel de tema
  • Barra de acción de Android barra divisora ​​de barras
  • Cómo cambiar el estilo de pestaña en Android?
  • Error al importar HoloEverywhere
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.