2010-12-31 3 views

risposta

1

Per le persone con lo stesso problema, dopo che mi sono quasi arreso ho avuto un'idea di come ottenere il divisore.

ho aggiunto la linea di divisione in fondo del mio layout personalizzato per ogni 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

Puoi pubblicare più xml? per esempio il layout più esterno e lo stile/Divider. grazie – pengwang

11

sono riuscito a trovare una soluzione più adeguata per questo problema (senza incluso il divisore nel layout di un singolo oggetto).

Quello che devi fare è definire in tema di vostra attività

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

e quindi creare il proprio stile 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

Questo è ottimo se non vuoi applicare questo stile solo a 1 Spinner nell'Attività. – Paul

+1

Dove definiamo l'articolo: ' @ style/App.Style.Spinner' Cosa intendi con "nel tema della tua attività"? Sono un po 'confuso su questo. –

+0

@ojonugwaochalifu Devi definire questo elemento come parte del tema della tua attività ... – Talihawk

9

Questo ha funzionato per me:

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

Il vantaggio di usare questo è che non rimuove l'effetto a catena su hover.

+1

funziona +1 per una soluzione semplice e facile. Grazie –

1

In base alla risposta @Talihawk, l'ho fatto funzionare per lo spinner specifico. Invece di impostare il tema di attività, impostare il tema direttamente per la vista filatore:

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

e

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

+1. Inoltre, devo aggiungere, puoi definire il tuo divisore in un 'drawable' e fare riferimento invece di' # 123456'. Oh, e 'android: theme' deve essere usato al posto di' stlye = "@ stye/..." ' – Sevastyan