js-components-basic-switch.md 4.5 KB
Newer Older
Z
zengyawen 已提交
1 2
# switch

H
geshi  
HelloCrease 已提交
3 4
>  **说明:**
>  从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
5 6 7

开关选择器,通过开关,开启或关闭某个功能。

Z
zengyawen 已提交
8
## 权限列表
Z
zengyawen 已提交
9 10 11



Z
zengyawen 已提交
12 13

## 子组件
Z
zengyawen 已提交
14 15 16 17

不支持。


Z
zengyawen 已提交
18 19 20 21
## 属性

除支持[通用属性](../arkui-js/js-components-common-attributes.md)外,还支持如下属性:

H
geshi  
HelloCrease 已提交
22 23 24 25 26 27
| 名称       | 类型      | 默认值   | 必填   | 描述         |
| -------- | ------- | ----- | ---- | ---------- |
| checked  | boolean | false | 否    | 是否选中。      |
| showtext | boolean | false | 否    | 是否显示文本。    |
| texton   | string  | "On"  | 否    | 选中时显示的文本。  |
| textoff  | string  | "Off" | 否    | 未选中时显示的文本。 |
Z
zengyawen 已提交
28 29


Z
zengyawen 已提交
30
## 样式
Z
zengyawen 已提交
31 32 33



Z
zengyawen 已提交
34
除支持[通用样式](../arkui-js/js-components-common-styles.md)外,还支持如下样式:
Z
zengyawen 已提交
35

H
HelloCrease 已提交
36 37 38 39 40 41 42 43 44 45
| 名称            | 类型                         | 默认值        | 必填   | 描述                                       |
| ------------- | -------------------------- | ---------- | ---- | ---------------------------------------- |
| texton-color  | <color>              | \#000000   | 否    | 选中时显示的文本颜色,仅设置texton和textoff生效。          |
| textoff-color | <color>              | \#000000   | 否    | 未选中时显示的文本颜色,仅设置texton和textoff生效。         |
| text-padding  | number                     | 0px        | 否    | texton/textoff中最长文本两侧距离滑块边界的距离。          |
| font-size     | <length>             | -          | 否    | 文本尺寸,仅设置texton和textoff生效。                |
| allow-scale   | boolean                    | true       | 否    | 文本尺寸是否跟随系统设置字体缩放尺寸进行放大缩小。<br/>如果在config描述文件中针对ability配置了fontSize的config-changes标签,则应用不会重启而直接生效。 |
| font-style    | string                     | normal     | 否    | 字体样式,仅设置texton和textoff生效。见text组件[font-style的样式属性](../arkui-js/js-components-basic-text.md#样式)。 |
| font-weight   | number&nbsp;\|&nbsp;string | normal     | 否    | 字体粗细,仅设置texton和textoff生效。见text组件的[font-weight的样式属性](../arkui-js/js-components-basic-text.md#样式)。 |
| font-family   | string                     | sans-serif | 否    | 字体列表,用逗号分隔,每个字体用字体名或者字体族名设置。列表中第一个系统中存在的或者通过[自定义字体](../arkui-js/js-components-common-customizing-font.md)指定的字体,会被选中作为文本的字体。仅设置texton和textoff生效。 |
Z
zengyawen 已提交
46 47


Z
zengyawen 已提交
48
## 事件
Z
zengyawen 已提交
49

Z
zengyawen 已提交
50
除支持[通用事件](../arkui-js/js-components-common-events.md)外,还支持如下事件:
Z
zengyawen 已提交
51

H
geshi  
HelloCrease 已提交
52 53
| 名称     | 参数                                       | 描述            |
| ------ | ---------------------------------------- | ------------- |
Z
zengyawen 已提交
54 55 56 57 58 59 60
| change | {&nbsp;checked:&nbsp;checkedValue&nbsp;} | 选中状态改变时触发该事件。 |

## 方法

支持[通用方法](../arkui-js/js-components-common-methods.md)

## 示例
Z
zengyawen 已提交
61

H
geshi  
HelloCrease 已提交
62
```html
Z
zengyawen 已提交
63 64
<!-- xxx.hml -->
<div class="container">
S
sienna1128 已提交
65 66 67 68 69 70
    <switch @change="normalswitchChange">
    </switch>
    <switch class="switch" showtext="true" texton="开启" textoff="关闭" @change="switchChange">
    </switch>
    <switch class="switch text" showtext="true" texton="开启" textoff="关闭" checked="true" @change="switchChange">
    </switch>
Z
zengyawen 已提交
71 72 73
</div>
```

H
geshi  
HelloCrease 已提交
74
```css
Z
zengyawen 已提交
75 76
/* xxx.css */
.container {
S
sienna1128 已提交
77 78 79
    display: flex;
    justify-content: center;
    align-items: center;
Z
zengyawen 已提交
80
}
S
sienna1128 已提交
81 82 83 84 85 86 87 88
.switch {
    texton-color: red;
    textoff-color: forestgreen;
}
.text {
    text-padding: 20px;
    font-size: 30px;
    font-weight: 700;
Z
zengyawen 已提交
89 90 91
}
```

H
geshi  
HelloCrease 已提交
92
```js
Z
zengyawen 已提交
93
// xxx.js
Y
yamila 已提交
94
import promptAction from '@ohos.promptAction';
Z
zengyawen 已提交
95
export default {
S
sienna1128 已提交
96 97 98 99 100
    data: {
        title: 'World'
    },
    switchChange(e) {
        if (e.checked) {
Y
yamila 已提交
101
            promptAction.showToast({
S
sienna1128 已提交
102 103 104
                message: "打开开关"
            });
        } else {
Y
yamila 已提交
105
            promptAction.showToast({
S
sienna1128 已提交
106 107 108 109 110 111
                message: "关闭开关"
            });
        }
    },
    normalswitchChange(e) {
        if (e.checked) {
Y
yamila 已提交
112
            promptAction.showToast({
S
sienna1128 已提交
113 114 115
                message: "switch on"
            });
        } else {
Y
yamila 已提交
116
            promptAction.showToast({
S
sienna1128 已提交
117 118 119
                message: "switch off"
            });
        }
Z
zengyawen 已提交
120 121 122 123
    }
}
```

S
sienna1128 已提交
124
![zh-cn_image_0000001152862510](figures/switch.gif)