Android Switch의 스타일을 어떻게 지정할 수 있습니까? ICS와 Samsung의 touchwiz

API 14에 도입 된 스위치 위젯은 기본적으로 holo 테마로 스타일이 지정됩니다. 브랜딩을 위해 약간 다른 스타일로 색상과 모양을 변경하고 싶습니다. 이것에 대해 어떻게 갑니까? 기본 ICS와 Samsung의 touchwiz 테마의 차이점을 보았 기 때문에 가능해야한다는 것을 알고 있습니다.

여기에 이미지 설명 입력

상태 드로어 블이 필요하다고 가정하고 http://developer.android.com/reference/android/R.styleable.html 에서 Switch_thumb 및 Switch_track이 있는 몇 가지 스타일을 보았습니다. . 나는 그것들을 사용하는 방법을 모른다.

차이가 나는 경우 ActionbarSherlock을 사용하고 있습니다. 물론 API v14 이상을 실행하는 장치 만 스위치를 사용할 수 있습니다.



답변

배경에 사용되는 드로어 블과 스위처 부분을 다음과 같이 정의 할 수 있습니다.

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

이것은 배경 위로 이동되는 이미지 인 썸 드로어 블을 정의합니다. 슬라이더에 사용되는 네 개의 나인 패치 이미지 가 있습니다 .

비활성화 된 버전 (Android에서 사용중인 xhdpi 버전)
누른 슬라이더 :
활성화 된 슬라이더 (켜짐 상태) :
기본 버전 (꺼짐 상태) :

또한 다음 선택기에 정의 된 배경에 대한 세 가지 상태가 있습니다.

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

비활성화 된 버전 :
중점 버전 :
그리고 기본 버전 :

스타일 스위치를 가지려면이 두 개의 선택기를 만들고 스위치보기로 설정 한 다음 7 개의 이미지를 원하는 스타일로 변경하십시오.


답변

Janusz의 멋진 자세한 답변입니다. 그러나 답변을 위해이 페이지를 찾는 사람들을 위해 더 쉬운 방법은 Android Asset Studio에서 링크 된 http://android-holo-colors.com/ (데드 링크)입니다.

모든 도구에 대한 좋은 설명은 AndroidOnRocks.com (현재 오프라인 사이트)에 있습니다.

그러나 이해가 더 명확 해 지므로 모든 사람이 Janusz의 답장을 읽을 것을 강력히 권장합니다. 도구를 사용하여 작업을 빠르게 수행


답변

다양한 색상 속성을 설정하여 재료 스타일을 사용자화할 수 있습니다. 예를 들어 사용자 정의 애플리케이션 테마

<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 드로어 블을 정의하여 아래 이미지와 같이 스위치 트랙 및 스위치 썸을 사용자 정의 할 수 있습니다 . 자세한 내용은 http://www.zoftino.com/android-switch-button-and-custom-switch-examples


답변

대체적이고 훨씬 쉬운 방법은 9 패치 대신 모양을 사용하는 것입니다. 여기에 이미 설명되어 있습니다 :
https://stackoverflow.com/a/24725831/512011