Spinner не применяет атрибут dropDownSelector
Я использую spinner и хочу добавить spinner - для изменения поведения зависит от состояний (сфокусированных, нажатых)
Пример проекта здесь 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>
AndroidManifest:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
Итак, если я запустил приложение в эмуляторе Android 4.0.2 API 14 и попытаюсь выбрать какой-либо элемент или прокрутить с помощью колеса моей мыши никакого эффекта, который я установил в селекторе (при нажатии или прокрутке - элементы должны быть красными, но он синий - по умолчанию для цвета ICS).
Для Android 2.2 API 8 при нажатии или прокрутке с помощью колеса (в этом случае состояние сфокусировано) цвет желтый [оранжевый] (цвет по умолчанию для Android 2.2)
Как включить селектор для счетчика?
![enter image description here]()
Ответы
Ответ 1
также официальная ошибка...
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>
Удачи!
Ответ 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>
установите селектор backgroud для вашего элемента просмотра, это все. Работайте со мной. Значение цвета альфа должно быть FF, или оно будет отображать оранжевый фон, одно значение цвета #FFDDDDD, правый # 55DDDDDD
![enter image description here]()
![enter image description here]()
Ответ 3
Могут быть и другие способы, но здесь я понимаю, что я использовал один из .
Объявите свой собственный стиль для счетчика в вашем res/values/styles.xml
, указывая на ваш drawable.
<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
будут зависеть от того, как проект настроен, и я думаю, что это будет стиль прядильщиков в вашем проекте, а не только один. Попробуйте и дайте мне знать, что вы получаете.