Пользовательский switchcompat с различными изображениями для состояний
1 ответ
Вот очень хороший пример:
Вы можете определить drawables, которые используются для фона, и часть переключателя как это:
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/switch_thumb"
android:track="@drawable/switch_bg" />
Теперь вам нужно создать селектор, который определяет различные состояния для переключателя, который можно рисовать. Вот копии из источников Android:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/switch_thumb_disabled_holo_light" />
<item android:state_pressed="true" android:drawable="@drawable/switch_thumb_pressed_holo_light" />
<item android:state_checked="true" android:drawable="@drawable/switch_thumb_activated_holo_light" />
<item android:drawable="@drawable/switch_thumb_holo_light" />
</selector>
Это определяет рисованный большой палец, изображение, которое перемещается по фону. Для слайдера используются четыре изображения из девяти патчей:
Деактивированная версия (версия xhdpi, которую использует Android)
Прессованный слайдер:
Активированный слайдер (в состоянии):
Версия по умолчанию (отключено):
Есть также три различных состояния для фона, которые определены в следующем селекторе:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/switch_bg_disabled_holo_dark" />
<item android:state_focused="true" android:drawable="@drawable/switch_bg_focused_holo_dark" />
<item android:drawable="@drawable/switch_bg_holo_dark" />
</selector>
Деактивированная версия:
Сфокусированная версия:
И версия по умолчанию:
Чтобы иметь стилизованный переключатель, просто создайте эти два селектора, установите для них вид переключателя, а затем измените семь изображений на нужный вам стиль.