Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spinner does not apply dropDownSelector attribute

I'm using spinner and want to add spinner - to change behavior depends of states(focused, pressed)

sample project is here https://github.com/vovs/spinner_issue

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

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

So, if I run app in emulator Android 4.0.2 API 14 and try to select some item or scroll using wheel of my mouse no any effect, that I set in selector(when press or scrolling - items should be red, but it is blue - default for ICS color).

For Android 2.2 API 8 when press or scroll using wheel(in this case state is focused) color is yellow[orange](default color for Android 2.2)

How to enable selector for spinner?

enter image description here

like image 782
vsvydenko Avatar asked Feb 06 '13 20:02

vsvydenko


2 Answers

also an official bug... https://code.google.com/p/android/issues/detail?id=24922

what helps:

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

good luck!

like image 111
cV2 Avatar answered Oct 20 '22 11:10

cV2


<?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 selector for your item view, that's all. Work for me. The color alpha value should be FF, or it will show orange background, left one color value is #FFDDDDDD, the right one is #55DDDDDD

enter image description hereenter image description here

like image 36
hoot Avatar answered Oct 20 '22 11:10

hoot