2013-02-06 2 views
10

ich Spinner bin mit und wollen Spinner hinzufügen - Verhalten zu ändern, von Staaten abhängt (fokussiert, gepresst)Spinner gilt nicht dropDownSelector Attribut

Beispielprojekt hier ist https://github.com/vovs/spinner_issue

Mein Code:

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

Also, wenn ich laufe App im Emulator Android 4.0.2 API 14 und versuche, einige Elemente auszuwählen oder blättern Sie mit Rad meiner Maus nicht Alle Effekte, die ich im Selektor eingestellt habe (beim Drücken oder Scrollen - Gegenstände sollten rot sein, aber blau - Standard für ICS-Farbe).

Für Android 2.2 API 8, wenn Presse oder Scrollrad (in diesem Fall Zustand liegt der Schwerpunkt) Farbe ist gelb [Orange] (Standardfarbe für Android 2.2)

Wie Selektor für Spinner aktivieren?

enter image description here

Antwort

8

auch eine offizielle Bug ... https://code.google.com/p/android/issues/detail?id=24922

was hilft:

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

viel Glück!

1

Es können auch andere Möglichkeiten, aber hier ist es, was ich von der Nutzung eines der Generators verstehen.

Deklarieren Sie Ihren eigenen Stil für den Spinner in Ihrem res/values/styles.xml zeigt auf Ihren Drawable.

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

erstellen res/values/themes.xml und Ihr eigenes Thema erklären, die von dem aktuellen Thema erbt. Fügen Sie innerhalb dieses Designs ein Element für jedes Attribut hinzu, das Sie ändern, und zeigen Sie es im letzten Schritt auf Ihren benutzerdefinierten Stil. Ich denke, das könnte in die Styles-Datei gehen, wenn Sie wollten, aber da der Generator sie trennt, folge ich.

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

In Ihrem AndroidManifest, fügen android:theme="@style/myCustomTheme" zur Öffnung application Tag.

Ihre Werte für parent hängen davon ab, wie das Projekt eingerichtet wird und ich denke, das wird Stil der Spinner in Ihrem Projekt und nicht nur eines. Probieren Sie es aus und lassen Sie mich wissen, was Sie bekommen.

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> 

set backgroud Selektor für Ihre Artikelansicht, das ist alles. Arbeite für mich.Der Wert Farbe alpha sein FF sollte, oder es wird orange Hintergrund, links ein Farbwert #FFDDDDDD, die richtige ist # 55DDDDDD

enter image description here enter image description here

zeigen