Пользовательский switchcompat с различными изображениями для состояний

Разработка приложения с представлениями List и Map. Для переключения между презентациями следует использовать пользовательский переключатель с изображениями, например так:

введите описание изображения здесь

Как создать такой собственный 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>

Деактивированная версия: Деактивированная версия
Сфокусированная версия: Ориентированная версия
И версия по умолчанию: версия по умолчанию

Чтобы иметь стилизованный переключатель, просто создайте эти два селектора, установите для них вид переключателя, а затем измените семь изображений на нужный вам стиль.

Другие вопросы по тегам