Spinner does not apply dropDownSelector attribute

流过昼夜 提交于 2019-12-14 04:16:10

问题


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?


回答1:


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!




回答2:


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




回答3:


There may be other ways but here's what I understand from using one of the Generators.

Declare your own style for the spinner in your res/values/styles.xml pointing to your drawable.

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

Create res/values/themes.xml and declare your own theme that inherits from the current theme. Within this theme, add an item for each attribute you're modifying and point it to your custom style from the last step. I think this could go in the styles file if you wanted, but since the generator separates them I follow suit.

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

In your AndroidManifest, add android:theme="@style/myCustomTheme" to the opening application tag.

Your values for parent will depend on how the project is setup and I think this will style of the spinners in your project and not just one. Try it out and let me know what you get.



来源:https://stackoverflow.com/questions/14737811/spinner-does-not-apply-dropdownselector-attribute

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!