Изменить цвет переключателя на Android
Я пытаюсь изменить цвет моего переключателя в Android. Я понимаю, что мне понадобятся новые 9 патчей. Я перешел к http://android-holo-colors.com/ и выбрал свой цвет и выбран (Switch Jelly Bean). Для использования Switch 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, и поместил его в соответствующие файлы:
- 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. Любые идеи?
Ответы
Ответ 1
По this, (прямой ответ от копирования-вставки BoD):
-
Вы не должны использовать android:thumb
и android:track
, но вместо этого app:thumb
и app:track
И вы должны добавить следующее в корень вашего XML-документа:
xmlns:app="http://schemas.android.com/apk/res-auto"
Ответ 2
Самый простой способ в Android Lollipop и выше,
<style name="AppTheme" parent="MaterialTheme.Light">
...
<item name="android:colorControlActivated">@color/color_switch</item>
</style>
Ответ 3
чтобы изменить цвет переключателя, вы можете использовать два изображения
- зеленый - когда переключатель включен
- красный - когда переключатель выключен
теперь поместите этот файл в выпадающую папку
<?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"
/>
Ответ 4
Попробуйте следующее:
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"
Ответ 5
Возможно, вам нужно поставить
style="@style/switchStyle"
в вашем XML, а также