13

我正在使用微调器并想添加微调器 - 改变行为取决于状态(聚焦,按下)

示例项目在这里https://github.com/vovs/spinner_issue

我的代码:

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>

安卓清单:

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

因此,如果我在模拟器 Android 4.0.2 API 14 中运行应用程序并尝试使用鼠标滚轮选择某些项目或滚动没有任何效果,我在选择器中设置(按下或滚动时 - 项目应该是红色的,但它是蓝色 - ICS 颜色的默认值)。

对于 Android 2.2 API 8,当使用滚轮按下或滚动时(在这种情况下,状态为焦点)颜色为黄色 [橙色](Android 2.2 的默认颜色)

如何启用微调器的选择器?

在此处输入图像描述

4

3 回答 3

9

也是一个官方错误... https://code.google.com/p/android/issues/detail?id=24922

有什么帮助:

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

祝你好运!

于 2013-10-26T13:43:48.760 回答
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>

为您的项目视图设置背景选择器,仅此而已。为我工作。颜色的alpha值应该是FF,否则会显示橙色背景,左边的颜色值是#FFDDDDDD,右边的是#55DDDDDD

在此处输入图像描述 在此处输入图像描述

于 2014-12-03T03:43:24.707 回答
1

可能还有其他方法,但这是我从使用其中一个Generators中所理解的。

res/values/styles.xml在指向您的可绘制对象时为微调器声明您自己的样式。

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

创建res/values/themes.xml并声明您自己的从当前主题继承的主题。在此主题中,为您正在修改的每个属性添加一个项目,并将其指向上一步中的自定义样式。我认为如果您愿意,这可以放在样式文件中,但是由于生成器将它们分开,我也照做。

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

在您的AndroidManifest中,添加android:theme="@style/myCustomTheme"到开始application标签。

您的值parent将取决于项目的设置方式,我认为这将是您项目中微调器的样式,而不仅仅是一个。试试看,让我知道你得到了什么。

于 2013-08-12T17:25:37.307 回答