花粉乐分享平台宣传视频
> 华为资讯 > 华为资讯 > 鸿蒙编程 > 3.7「HarmonyOS鸿蒙开发」组件Switch
3.7「HarmonyOS鸿蒙开发」组件Switch
来源:RubyHan
2023-01-03 11:04:36
405
管理
3.7【HarmonyOS鸿蒙开发】组件Switch

作者:韩茹

公司:程序咖(北京)科技有限公司

鸿蒙巴士专栏作家

Switch是切换单个设置开/关两种状态的组件。

一、支持的XML属性

Switch的共有XML属性继承自:Text

Switch的自有XML属性见下表:

属性名称

中文描述

取值

取值说明

使用案例

text_state_on

开启时显示的文本

string类型

可以直接设置文本字串,也可以引用string资源。

ohos:text_state_on="联系" ohos:text_state_on="$string:test_str"

text_state_off

关闭时显示的文本

string类型

可以直接设置文本字串,也可以引用string资源。

ohos:text_state_off="联系" ohos:text_state_off="$string:test_str"

track_element

轨迹样式

Element类型

可直接配置色值,也可引用color资源或引用media/graphic下的图片资源。

ohos:track_element="#FF0000FF" ohos:track_element="media:media_src" ohos:track_element="$graphic:graphic_src"

thumb_element

thumb样式

Element类型

可直接配置色值,也可引用color资源或引用media/graphic下的图片资源。

ohos:thumb_element="#FF0000FF" ohos:thumb_element="​media:media_src" ohos:thumb_element="$graphic:graphic_src"

marked

当前状态

boolean类型

可以直接设置true/false,也可以引用boolean资源。

ohos:marked="true" ohos:marked="$boolean:true"

check_element

状态标志样式

Element类型

可直接配置色值,也可引用color资源或引用media/graphic下的图片资源。

ohos:check_element="#000000" ohos:check_element="​media:media_src" ohos:check_element="$graphic:graphic_src"

二、创建Switch

在layout目录下的xml文件中创建Switch。

Switch效果:

三、设置Switch

1、设置Switch在开启和关闭时的文本。

在xml中设置:

在Java代码中设置:

Switch btnSwitch = (Switch) findComponentById(ResourceTable.Id_btn_switch);btnSwitch.setStateOffText("OFF");btnSwitch.setStateOnText("ON");

设置开启和关闭文本效果:

2、设置Switch的滑块和轨迹的样式。

定义Switch在开启和关闭状态下滑块和轨迹的样式。

在MainAbilitySlice.java的onStart()方法中,添加以下代码:

ShapeElement elementThumbOn = new ShapeElement();elementThumbOn.setShape(ShapeElement.OVAL);elementThumbOn.setRgbColor(RgbColor.fromArgbInt(0xFF1E90FF));elementThumbOn.setCornerRadius(50);// 关闭状态下滑块的样式ShapeElement elementThumbOff = new ShapeElement();elementThumbOff.setShape(ShapeElement.OVAL);elementThumbOff.setRgbColor(RgbColor.fromArgbInt(0xFFFFFFFF));elementThumbOff.setCornerRadius(50);// 开启状态下轨迹样式ShapeElement elementTrackOn = new ShapeElement();elementTrackOn.setShape(ShapeElement.RECTANGLE);elementTrackOn.setRgbColor(RgbColor.fromArgbInt(0xFF87CEFA));elementTrackOn.setCornerRadius(50);// 关闭状态下轨迹样式ShapeElement elementTrackOff = new ShapeElement();elementTrackOff.setShape(ShapeElement.RECTANGLE);elementTrackOff.setRgbColor(RgbColor.fromArgbInt(0xFF808080));elementTrackOff.setCornerRadius(50);

通过以下方法,按状态将样式整合到StateElement中。

private StateElement trackElementInit(ShapeElement on, ShapeElement off){    StateElement trackElement = new StateElement();    trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);    trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);    return trackElement;}private StateElement thumbElementInit(ShapeElement on, ShapeElement off) {    StateElement thumbElement = new StateElement();    thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);    thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);    return thumbElement;}

设置Switch的滑块与轨迹的样式。

 Switch btnSwitch = (Switch) findComponentById(ResourceTable.Id_btn_switch);  btnSwitch.setTrackElement(trackElementInit(elementTrackOn, elementTrackOff));  btnSwitch.setThumbElement(thumbElementInit(elementThumbOn, elementThumbOff));

设置滑块与轨迹样式效果:

3、设置响应Switch状态改变的事件。

btnSwitch.setCheckedStateChangedListener(new AbsButton.CheckedStateChangedListener() {    // 回调处理Switch状态改变事件    @Override    public void onCheckedChanged(AbsButton button, boolean isChecked) {   }});

花粉社群VIP加油站

1
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
不吃点心会饿..(小蜜蜂)
文章
472
主题
0
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
1
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索