开关

  • 更新时间:2026-06-15 07:53:04

开关-switch

原生类型:{com.google.android.material.materialswitch.MaterialSwitch}

开关:顾名思义,就是开关的意思,只有打开或者关闭两种状态。

一、常用属性

主题颜色 - 主题颜色

设置主题颜色

<界面>
    <状态条 />
    <线性布局="最大" 方向="横向">
        <开关 主题颜色="#57965C" 外边距="5" 文本="吃饭" />
        <开关 主题颜色="#C94F4F" 外边距="5" 文本="睡觉" />
        <开关 主题颜色="#3574F0" 外边距="5" 文本="游戏" />
    </线性布局>
    <线性布局="最大" 方向="横向">
        <开关 主题颜色="#57965C" 外边距="5" 文本="吃饭" 选中="是" />
        <开关 主题颜色="#C94F4F" 外边距="5" 文本="睡觉" 选中="是" />
        <开关 主题颜色="#3574F0" 外边距="5" 文本="游戏" 选中="是" />
    </线性布局>
</界面>

文本 - 文本

设置文本

<界面>
    <状态条 />
    <开关="最大" 文本="我是文本" />
</界面>

文本尺寸 - 文本尺寸

设置文本尺寸

<界面>
    <状态条 />
    <开关="最大" 文本="我的尺寸:10" 文本尺寸="10" />
    <开关="最大" 文本="我的尺寸:17" 文本尺寸="17" />
</界面>

文本颜色 - 文本颜色

设置文本颜色

<界面>
    <状态条 />
    <开关="最大" 文本="看我颜色" 文本颜色="#C94F4F" />
    <开关="最大" 文本="看我颜色" 文本颜色="#3574F0" />
</界面>

选中 - 是否选中

设置是否选中

<界面>
    <状态条 />
    <开关="最大" 文本="没选择" 选中="否" />
    <开关="最大" 文本="选中" 选中="是" />
</界面>

最小宽度 - 最小宽度

设置最小宽度

<界面>
    <状态条 />
    <线性布局="最大" 方向="竖向">
        <!--为了看清效果,这里设置背景颜色-->
        <开关 外边距="5" 文本="最小宽度:200" 最小宽度="200" 背景颜色="#57965C" />
        <开关 外边距="5" 文本="最小宽度:250" 最小宽度="250" 背景颜色="#C94F4F" />
    </线性布局>
</界面>

最小高度 - 最小高度

设置最小高度

<界面>
    <状态条 />
    <线性布局="最大" 方向="横向">
        <!--为了看清效果,这里设置背景颜色-->
        <开关 外边距="5" 文本="最小高度:60" 最小高度="60" 背景颜色="#57965C" />
        <开关 外边距="5" 文本="最小高度:80" 最小高度="80" 背景颜色="#C94F4F" />
    </线性布局>
</界面>

内边距 - 内边距

设置内边距

参数顺序:左,上,右,下(单位:dp)

<界面>
    <状态条 />
    <线性布局="最大" 方向="竖向">
        <!--为了看清效果,这里设置背景颜色-->
        <开关 内边距="10" 外边距="5" 文本="内边距:10" 背景颜色="#57965C" />
        <开关 内边距="20" 外边距="5" 文本="内边距:20" 背景颜色="#C94F4F" />
    </线性布局>
</界面>

重力 - 重力

设置重力

可选值参考重力参数表

<界面>
    <状态条 />
    <线性布局="最大" 方向="竖向">
        <开关 外边距="5"="最大" 文本="开始" 重力="start" />
        <开关 外边距="5"="最大" 文本="中间" 重力="中间" />
        <开关 外边距="5"="最大" 文本="结束" 重力="end" />
    </线性布局>
</界面>

背景颜色 - 背景颜色

设置背景颜色

<界面>
    <状态条 />
    <线性布局="最大" 方向="横向">
        <开关 外边距="5" 文本="吃饭" 背景颜色="#57965C" />
        <开关 外边距="5" 文本="睡觉" 背景颜色="#C94F4F" />
        <开关 外边距="5" 文本="游戏" 背景颜色="#3574F0" />
    </线性布局>
</界面>

背景图片 - 背景图片

设置背景图片

<界面>
    <状态条 />
    <线性布局="最大" 方向="竖向">
        <!--
        文本颜色="背景" 是一种动态设置文本颜色的方式,表示当前字体颜色是背景颜色。
        -->
        <开关 外边距="2"="250" 文本="吃饭" 文本颜色="背景"
            背景图片="example/$ui - 交互界面/03.check-复选框/img/bg01.png" />
        <开关 外边距="2"="250" 文本="睡觉" 文本颜色="背景"
            背景图片="example/$ui - 交互界面/03.check-复选框/img/bg02.png" />
        <开关 外边距="2"="250" 文本="游戏" 文本颜色="背景"
            背景图片="example/$ui - 交互界面/03.check-复选框/img/bg03.png" />
    </线性布局>
</界面>

存储关键字 - 应用内存储

应用内存储

通过storeKey(存储关键字)指定一个存储布尔值的关键字,获取值时可以直接通过$storage($存储)获取布尔值。

注意:不同的控件存储的类型不同,对于本控件(开关)则存储的是布尔值类型,表达当前是否被打开

<!-- 你必须在ui(界面)节点中通过store(存储)指定$storage($存储)的命名空间,等价于使用代码:let storage = $storage.create("MyAppSwitch"); -->
<界面 存储="MyAppSwitch">
    <状态栏 />
    <!-- 使用storeKey(存储关键字)属性,指定关键字,等价于使用代码:let eat = $storage.create("MyAppSwitch").getBool("喜欢吃饭"); -->
    <!-- 使用storeDef(存储默认值)属性,指定默认值,等价于使用代码:let eat = $storage.create("MyAppSwitch").getBool("喜欢吃饭",true); -->
    <开关 存储默认值="是" 存储关键字="喜欢吃饭" 文本="热爱干饭" />
</界面>

如果我们已经配置好了应用内存储,则可以直接获取数据:

注意:一、要使用应用内存储,必须在ui(界面)节点指定属性store(存储)的值,该值指定存储的命名空间; 二、不是所有的控件都支持应用内存储; 三、不同的控件存储的数据类型可能都不一致,例如:输入类型的控件存储的是字符串类型,开关、多选框存储的就是布尔类型的数据。

//创建(或者加载)存储对象
let storage = $storage.create("MyAppSwitch");//名称要一致
//获取数据
let data = storage.getBoolean("loveEat",false);//数据类型是布尔值

二、常用函数

设置选中(状态)

设置选中状态

  • 参数 : 状态 {boolean} 是否选中
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//设置选中状态
开关.设置选中(是);

是选中的()

判断选中状态

  • 返回 : {布尔值} 是否选中
  • 版本 : 1.8.2
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//判断选中状态
如果(开关.是选中的()){
    日志("选中了");
}

监听选中(回调)

监听状态改变

  • 参数 : 回调 ((是否选中)=>{}) 回调函数
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//监听状态改变
开关.监听选中((是否选中)=>{
    //..
});

设置重力(重力)

设置重力

  • 参数 : 重力 {String} 例如:"中|下"
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//设置重力
开关.设置重力("中|下");

设置文本(文本)

设置文本

  • 参数 : 文本 {String} 文本内容
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//设置文本
开关.设置文本("是否开启");

获取文本()

获取文本

  • 返回 : {String} 文本内容
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//获得文本
定义 文本 = 开关.获取文本();

设置主题颜色(颜色)

设置主题颜色

  • 参数 : 颜色 {String} 颜色值
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//设置主题颜色
开关.设置主题颜色("#26282E");

设置文本颜色(颜色)

设置文本颜色

  • 参数 : 颜色 {String} 颜色值
//解析布局,获得界面对象
定义 界面 = $界面.解析布局("./资源/主界面.xml");
//获取控件
定义 开关 = 界面.找控件("我的开关");
//设置文本颜色
开关.设置文本颜色("#26282E");