2010-12-31 8 views

Respuesta

1

Para las personas con el mismo problema que después de casi gived hasta que me dieron una idea de cómo conseguir el divisor.

he añadido la línea divisoria en la parte inferior de mi diseño personalizado para cada elemento

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" style="@style/ListItem2"> 

    <TextView android:id="@+id/Text" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:layout_alignParentLeft="true" 
     style="@style/SpinnerView_Text" android:paddingLeft="10dip" /> 

    <ImageView android:id="@+id/icon" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:src="@drawable/arrowright" 
     android:layout_alignParentRight="true" android:layout_centerInParent="true" 
     android:layout_marginRight="20dip" /> 

</RelativeLayout> 

<ImageView android:id="@+id/Divider1" android:layout_width="fill_parent" 
    android:layout_height="1dip" style="@style/Divider"></ImageView> 

+0

Se puede publicar más xml? por ejemplo, el diseño y el estilo más externos/Divider.thank – pengwang

11

he conseguido encontrar una solución más adecuada para este problema (sin incluyendo el divisor en el diseño de un solo elemento).

Lo que tienes que hacer es definir en el tema de su actividad

 <item name="android:dropDownListViewStyle">@style/App.Style.Spinner</item> 

y luego crear el estilo propio con

<style name="App.Style.Spinner" parent="@style/Widget.Sherlock.Light.ListView.DropDown"> 
      <item name="android:dividerHeight">10dip</item> 
      <item name="android:divider">@drawable/mydivider</item> 
    </style> 
+6

Esto es genial a menos que desee aplicar este estilo a solo 1 Spinner en la Actividad. – Paul

+1

Donde definimos el artículo: ' @ style/App.Style.Spinner' ¿Qué quiere decir con "en el tema de su actividad"? Estoy un poco confundido acerca de esto. –

+0

@ojonugwaochalifu Usted tiene que definir este elemento como parte del tema de su actividad ... – Talihawk

9

Esto funcionó para mí:

<style name="SpinnerStyle" parent="Widget.AppCompat.ListView.DropDown"> 
     <item name="android:divider">#d1d1d1</item> 
     <item name="android:dividerHeight">0.5dp</item> 
    </style> 

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="android:dropDownListViewStyle">@style/SpinnerStyle</item> 

La ventaja de usar esto es que no elimina el efecto dominó en el vuelo estacionario.

+1

funciona 1 de solución simple y fácil. Gracias –

1

Basado en @Talihawk respuesta, lo hice funcionar para específico spinner solamente. En lugar de establecer su tema de la actividad, establecer el tema directamente para la vista spinner:

<style name="MatchSpinnerStyle" parent="android:style/Widget.ListView.DropDown"> 
    <item name="android:divider">#123456</item> 
    <item name="android:dividerHeight">1dp</item> 
</style> 

<style name="MatchSpinnerTheme" parent="AppTheme"> 
    <item name="android:dropDownListViewStyle">@style/MatchSpinnerStyle</item> 
</style> 

y

<android.support.v7.widget.AppCompatSpinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"   
    android:theme="@style/MatchSpinnerTheme"/> 
+0

+1. Además, debo agregar, puedes definir tu divisor en un 'drawable' y referenciarlo en vez de' # 123456'. Ah, y 'android: theme' debe usarse en lugar de' stlye = "@ stye/..." ' – Sevastyan

Cuestiones relacionadas