Как я могу настроить Android-коммутатор?

Виджет коммутатора, введенный в API 14, по умолчанию задан голой темой. Я хочу немного поменять стиль, изменив его цвета и немного поработав по причинам брендинга. Как это можно сделать? Я знаю, что это должно быть возможно, поскольку ive видел разницу между стандартом ICS и темой Samsung touchwiz

enter image description here

Я предполагаю, что мне понадобятся некоторые штатные чертежи, и я видел несколько стилей в http://developer.android.com/reference/android/R.styleable.html с Switch_thumb и Switch_track, которые выглядят так, как я мог бы быть после. Я просто не знаю, как их использовать.

Я использую ActionbarSherlock, если это имеет значение. Разумеется, только устройства, работающие с API v14 или выше, смогут использовать коммутатор.

Ответ 1

Вы можете определить чертежи, которые используются для фона, и часть переключателя, как это:

<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>

Это определяет максимальный размер, который перемещается по фону. Для слайдера используются четыре изображения ninepatch:

Деактивированная версия (версия xhdpi, которую использует Android) The deactivated version
Прессованный слайдер: The pressed slider
Активированный слайдер (в состоянии): The activated slider
Версия по умолчанию (выключено): enter image description here

Существуют три разных состояния для фона, которые определены в следующем селекторе:

<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>

Деактивированная версия: The deactivated version
Сфокусированная версия: The focused version
И версия по умолчанию: the default version

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

Ответ 2

Это удивительный подробный ответ Януша. Но только ради людей, которые приходят на эту страницу для ответов, более простой способ - http://android-holo-colors.com/ (мертвая ссылка), связанная с Android Asset Studio

Хорошее описание всех инструментов находится в AndroidOnRocks.com (теперь сайт отключен)

Тем не менее, я очень рекомендую всем прочитать ответ от Janusz, так как он станет более понятным. Используйте инструмент, чтобы быстро делать вещи.

Ответ 3

Альтернативный и гораздо более простой способ - использовать фигуры вместо 9-патчей. Это уже объяснено здесь: fooobar.com/questions/52437/...

Ответ 4

Вы можете настроить стили материалов, установив разные цветовые свойства. Например <специальная тема

<style name="CustomAppTheme" parent="Theme.AppCompat">
    <item name="android:textColorPrimaryDisableOnly">#00838f</item>
    <item name="colorAccent">#e91e63</item>
</style>

Пользовательская тема переключения

<style name="MySwitch" parent="@style/Widget.AppCompat.CompoundButton.Switch">
    <item name="android:textColorPrimaryDisableOnly">#b71c1c</item>
    <item name="android:colorControlActivated">#1b5e20</item>
    <item name="android:colorForeground">#f57f17</item>
    <item name="android:textAppearance">@style/TextAppearance.AppCompat</item>
</style>

Вы можете настроить дорожку переключателя и переместить большой палец, как показано ниже, указав xml drawables. Для получения дополнительной информации http://www.zoftino.com/android-switch-button-and-custom-switch-examples

настраиваемая дорожка переключения и большой палец