2013-02-06 14 views
10

sto usando filatore e desidera aggiungere filatore - per cambiare il comportamento dipende degli stati (incentrato, pressato)Spinner non si applica l'attributo dropDownSelector

progetto di esempio è qui https://github.com/vovs/spinner_issue

Il mio codice:

activity_main.xml

<Spinner 
     android:id="@+id/spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="30dp" 
     android:spinnerMode="dropdown" 
     android:dropDownSelector="@drawable/spinner_state" /> 

spinne r_state.xml

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

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_enabled="false" 
     android:drawable="@color/black" /> 
    <item 
     android:state_pressed="true" 
     android:state_enabled="true" 
     android:drawable="@color/red" /> 
    <item 
     android:state_focused="true" 
     android:state_enabled="true" 
     android:drawable="@color/red" /> 
    <item 
     android:state_enabled="true" 
     android:drawable="@color/gray" /> 
</selector> 

AndroidManifest:

<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

Quindi, se corro applicazione in emulatore di Android 4.0.2 API 14 e cerco di selezionare qualche elemento o scorrere usando la rotella del mio mouse senza qualsiasi effetto, che ho impostato nel selettore (quando si preme o si scorre, le voci dovrebbero essere rosse, ma è blu - impostazione predefinita per il colore ICS).

per Android 2.2 API 8 quando premere o scorrere con ruota (in questo caso lo stato è focalizzato) colore è giallo [arancione] (colore predefinito per Android 2.2)

come attivare selettore per filatore?

enter image description here

risposta

8

anche un bug di ufficiale ... https://code.google.com/p/android/issues/detail?id=24922

ciò che aiuta:

<resources> 
    <style name="Theme.MyTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:dropDownListViewStyle">@style/Theme.MyListView</item> 
    </style> 

    <style name="Theme.MyListView" parent="@android:style/Widget.Holo.Light.ListView"> 
     <item name="android:listSelector">@drawable/orange_list</item> 
    </style> 
</resources> 

buona fortuna!

1

Ci possono essere altri modi, ma qui è quello che ho capito da utilizzando uno dei Generators.

Dichiara il tuo stile per lo spinner nel tuo res/values/styles.xml che punta al tuo drawable.

<style name="myCustomSpinner" parent="android:Widget.Holo.Light.Spinner"> 
    <item name="android:background">@drawable/spinner_state</item> 
</style> 

Creare res/values/themes.xml e dichiarare il tuo tema che eredita dalla tema corrente. All'interno di questo tema, aggiungi un elemento per ogni attributo che stai modificando e indirizzalo al tuo stile personalizzato dall'ultimo passaggio. Penso che questo potrebbe andare nel file degli stili, se lo si desidera, ma poiché il generatore li separa seguo l'esempio.

<style name="myCustomTheme" parent="android:Theme.Light"> 
    <item name="android:dropDownSpinnerStyle">@style/myCustomSpinner</item> 
</style> 

Nel vostro AndroidManifest, aggiungi android:theme="@style/myCustomTheme" all'apertura application tag.

I valori per parent dipenderanno da come è stato impostato il progetto e penso che questo dipenda dallo stile dei filatori del progetto e non da uno solo. Provalo e fammi sapere cosa ottieni.

3
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@color/lighter_gray_no_transparent" /> 
    <item android:state_selected="true" android:drawable="@color/lighter_gray_no_transparent" /> 
    <item android:state_pressed="true" android:drawable="@color/lighter_gray_no_transparent" /> 
    <item android:drawable="@android:color/transparent"/> 
</selector> 

<color name="lighter_gray_no_transparent">#FFDDDDDD</color> 

impostare il selettore di backgroud per la visualizzazione degli articoli, tutto qui. Lavora per me.Il valore alfa colore deve essere FF, oppure mostrerà sfondo arancione, a sinistra un valore di colore è #FFDDDDDD, quello di destra è # 55DDDDDD

enter image description here enter image description here

Problemi correlati