You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Switch开关状态的Track颜色,保留原有Thumb与Track尺寸

实现Switch开关状态的Track颜色切换(不修改现有Drawable尺寸)

方法一:使用Drawable状态选择器(兼容所有Android版本)

创建新的Drawable文件 res/drawable/track_selector.xml,完全复用原custom_track.xml的尺寸、圆角设置,仅针对开关状态定义不同颜色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 开关开启状态 -->
    <item android:state_checked="true">
        <shape android:shape="rectangle">
            <size
                android:width="60dp"
                android:height="30dp" />
            <corners android:radius="15dp" />
            <solid android:color="@color/orange" /> <!-- 替换为你需要的橙色资源 -->
        </shape>
    </item>
    <!-- 开关关闭状态(默认) -->
    <item>
        <shape android:shape="rectangle">
            <size
                android:width="60dp"
                android:height="30dp" />
            <corners android:radius="15dp" />
            <solid android:color="@color/cold_grey06" /> <!-- 原灰色资源 -->
        </shape>
    </item>
</selector>

修改Switch布局,将android:track指向这个新选择器,android:thumb保留原文件不变:

<Switch
    android:id="@+id/rememberSwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:thumb="@drawable/custom_thumb"
    android:track="@drawable/track_selector" />

方法二:使用Tint着色(API 21+ 或 AppCompatSwitch兼容低版本)

若项目支持API 21及以上,或使用AppCompatSwitch,可通过Tint更简洁实现,无需重复编写shape结构:

  1. 创建颜色状态选择器 res/color/track_color.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/orange" android:state_checked="true" />
    <item android:color="@color/cold_grey06" />
</selector>
  1. 修改Switch布局,保留原custom_track.xml,添加Tint属性:
<Switch
    android:id="@+id/rememberSwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:thumb="@drawable/custom_thumb"
    android:track="@drawable/custom_track"
    android:trackTint="@color/track_color"
    android:trackTintMode="src_in" />

如需兼容API 21以下,替换为AppCompatSwitch并使用AppCompat属性:

<androidx.appcompat.widget.SwitchCompat
    android:id="@+id/rememberSwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    app:thumb="@drawable/custom_thumb"
    app:track="@drawable/custom_track"
    app:trackTint="@color/track_color"
    app:trackTintMode="src_in" />

内容的提问来源于stack exchange,提问作者Ömer Seyfettin Yavuzyiğit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:35:38