Изменение цвета переключателя в Android
Я пытаюсь изменить цвет переключателя в Android. Я понимаю, что мне понадобятся новые 9patches. Я подошел к http://android-holo-colors.com/ и выбрал мой цвет и выбран (переключатель Jelly Bean). Использовать переключатель мармеладка, мне пришлось использовать: https://github.com/BoD/android-switch-backport. Чтобы импортировать его в мой проект, мне пришлось добавить:
<item name="switchStyle">@style/Widget.Holo.CompoundButton.Switch</item>
к моим стилям, а затем в xml я должен использовать переключатель, как Итак:
<org.jraf.android.backport.switchwidget.Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
теперь все с переключателем работает нормально. Затем я взял все, что было выведено из генератора цветов Android holo, и поместил его в соответствующие файлы:
- drawable (2 селектора файлов)
- drawable-hdpi (9patch файлы)
- drawable-xhdpi (9patch файлов)
- drawable-xxhdpi (9patch файлов)
затем я добавил к моему XML-код:
<org.jraf.android.backport.switchwidget.Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/apptheme_switch_inner_holo_light"
android:track="@drawable/apptheme_switch_track_holo_light" />
но это все еще оригинальный синий цвет. Я считаю, что все делаю правильно. Все компилируется (xml, java). Примечание: я импортирую org.jraf.android.backport.switchwidget.Switch
в моей java также. Есть идеи?
5 ответов
по состоянию на этой, (прямой ответ от BoD copy-paste):
-
вы не должны использовать
android:thumb
иandroid:track
, аapp:thumb
иapp:track
и вы должны добавить следующее в корень XML-документа:xmlns:app="http://schemas.android.com/apk/res-auto"
самый простой способ в Android Lollipop и выше,
<style name="AppTheme" parent="MaterialTheme.Light">
...
<item name="android:colorControlActivated">@color/color_switch</item>
</style>
попробуйте это:
switch_thumb.в XML
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/switch_thumb_holo_light" />
<item android:state_pressed="true" android:drawable="@drawable/switch_thumb_activated_holo_light" />
<item android:state_checked="true" android:drawable="@drawable/switch_thumb_activated_holo_light" />
<item android:drawable="@drawable/switch_thumb_holo_light" />
</selector>
в макете переключатель:
android:thumb="@drawable/switch_thumb"
изменение цвета переключателя вы можете использовать два изображения
- зеленый-когда переключатель включен
- красный - когда переключатель выключен
теперь поместите этот файл в папку drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/blue_checked" android:state_checked="true"/>
<item android:drawable="@drawable/blue_unchecked" android:state_checked="false"/>
</selector>
и в макете XML-файл, используйте его, как показано ниже
<CheckBox
android:id="@+id/user_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/notif_checkbox_selector"
/>