wenmin92
3/28/2018 - 1:35 AM

自定义Switch

自定义Switch

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#1ce91c" android:state_checked="true" />
    <item android:color="#c2c2c2" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetBottom="9dp"
       android:insetTop="9dp">
    <shape android:shape="rectangle">
        <solid android:color="#F000" />
        <size android:height="4dp" />
        <corners android:radius="8dp" />
    </shape>
</inset>

<!-- 这里使用 InsetDrawable 来设置上下间距,调整轨道高度 -->
<!-- InsetDrawable 相关文档地址 https://developer.android.com/guide/topics/resources/drawable-resource.html?hl=zh-cn#Inset -->
<android.support.v7.widget.SwitchCompat
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="switch"
    app:switchMinWidth="48dp"
    app:switchPadding="8dp"
    app:thumbTint="#ffffff"
    app:track="@drawable/switch_track"
    app:trackTint="@color/switch_track_tint" />

<!-- track 自定义轨道样式 -->
<!-- trackTint 自定义轨道颜色,在轨道drawable中只需将颜色设置为黑色即可 -->
<!-- thumbTint 自定义开关按钮颜色 -->
<!-- switchMinWidth 自定义Switch宽度 -->

<!-- Switch自定义样式,默认情况下开关按钮和滑动轨道的高度是一样的,并且在xml文件中对轨道的宽高设置是无效的 -->
<!-- 轨道高度低于开关按钮高度:轨道增加一个透明的边框 -->
<!-- 轨道高度高于开关按钮高度:开关按钮增加一个透明的边框 -->
<!-- 轨道的宽度会随着开关按钮的宽度自动变化,如果想要修改轨道的宽度,修改开关按钮的宽度就可以了 -->