鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:多态样式)

news/2025/3/10 23:07:35/

设置组件不同状态下的样式。

说明:

从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

从API Version 11开始支持另一种写法attributeModifier,可根据开发者需要动态设置属性。

stateStyles

stateStyles(value: StateStyles)

设置组件不同状态的样式。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填说明
valueStateStyles设置组件不同状态的样式。

StateStyles接口说明

从API version 9开始,该接口支持在ArkTS卡片中使用。只支持通用属性。

状态名称类型必填描述
normal()=>void组件无状态时的样式。
pressed()=>void组件按下状态的样式。
disabled()=>void组件禁用状态的样式。
focused()=>void组件获焦状态的样式。
clicked()=>void组件点击状态的样式。
selected10+()=>void组件选中状态的样式。

selected选中状态说明

  • 当前多态样式的选中状态样式依赖组件选中属性值,可以使用onClick修改属性值,或使用属性自带$$双向绑定功能。

  • 当前支持selected的组件及其参数/属性值:

    组件支持的参数/属性起始API版本
    Checkboxselect10
    CheckboxGroupselectAll10
    Radiochecked10
    ToggleisOn10
    ListItemselected10
    GridItemselected10
    MenuItemselected10

示例

示例1

// xxx.ets
@Entry
@Component
struct StyleExample {@State isEnable: boolean = true@Styles pressedStyles():void {.backgroundColor("#ED6F21").borderRadius(10).borderStyle(BorderStyle.Dashed).borderWidth(2).borderColor("#33000000").width(120).height(30).opacity(1)}@Styles disabledStyles():void {.backgroundColor("#E5E5E5").borderRadius(10).borderStyle(BorderStyle.Solid).borderWidth(2).borderColor("#2a4c1919").width(90).height(25).opacity(1)}@Styles normalStyles():void {.backgroundColor("#0A59F7").borderRadius(10).borderStyle(BorderStyle.Solid).borderWidth(2).borderColor("#33000000").width(100).height(25).opacity(1)}build() {Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) {Text("normal").fontSize(14).fontColor(Color.White).opacity(0.5).stateStyles({normal: this.normalStyles,}).margin({ bottom: 20 }).textAlign(TextAlign.Center)Text("pressed").backgroundColor("#0A59F7").borderRadius(20).borderStyle(BorderStyle.Dotted).borderWidth(2).borderColor(Color.Red).width(100).height(25).opacity(1).fontSize(14).fontColor(Color.White).stateStyles({pressed: this.pressedStyles,}).margin({ bottom: 20 }).textAlign(TextAlign.Center)Text(this.isEnable == true ? "effective" : "disabled").backgroundColor("#0A59F7").borderRadius(20).borderStyle(BorderStyle.Solid).borderWidth(2).borderColor(Color.Gray).width(100).height(25).opacity(1).fontSize(14).fontColor(Color.White).enabled(this.isEnable).stateStyles({disabled: this.disabledStyles,}).textAlign(TextAlign.Center)Text("control disabled").onClick(() => {this.isEnable = !this.isEnableconsole.log(`${this.isEnable}`)})}.width(350).height(300)}
}

zh-cn_image_0000001188742468

示例2

// xxx.ets
@Entry
@Component
struct Index {@State value: boolean = false@State value2: boolean = false@StylesnormalStyles(): void{.backgroundColor("#E5E5E1")}@StylesselectStyles(): void{.backgroundColor("#ED6F21").borderWidth(2)}build() {Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {Column() {Text('Radio1').fontSize(25)Radio({ value: 'Radio1', group: 'radioGroup1' }).checked(this.value).height(50).width(50).borderWidth(0).borderRadius(30).onClick(() => {this.value = !this.value}).stateStyles({normal: this.normalStyles,selected: this.selectStyles,})}.margin(30)Column() {Text('Radio2').fontSize(25)Radio({ value: 'Radio2', group: 'radioGroup2' }).checked($$this.value2).height(50).width(50).borderWidth(0).borderRadius(30).stateStyles({normal: this.normalStyles,selected: this.selectStyles,})}.margin(30)}.padding({ top: 30 })}
}

selected

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 


http://www.ppmy.cn/news/1372329.html

相关文章

CSS 常见属性设置

一. 文本属性 1.1. 装饰线 text-decoration text-decoration有如下常见取值: none:无任何装饰线(可以去除a元素默认的下划线)underline:下划线overline:上划线line-through:中划线(删除线&…

Linux 学习笔记(12)

十二、 系统服务 1 、系统服务分类,根据其使用的方法来分,可以被分为三类 a、由 init 控制的服务:基本都是系统级别的服务,运行级别这一章讲的就是这一类的服务 b、由 System V 启动脚本启动的服务:和我们打交道最多…

蓝桥杯复习之前缀和

题目链接:https://www.luogu.com.cn/problem/P8649 思路: 看到区间和,第一反应肯定是前缀和,我们求出前缀和后对前缀和数组每一个值模k,然后对一个数组的值查看前面有几个相同的,举个例子:…

#include<ros/ros.h>头文件报错

快捷键 ctrl shift B 调用编译,选择:catkin_make:build)(要先在vscode上添加扩展:ros) 可以点击配置设置为默认,修改.vscode/tasks.json 文件 修改.vscode/tasks.json 文件,否则ros.h头文件会报错 内容修改为以下内…

【鸿蒙 HarmonyOS 4.0】登录流程

一、背景 登录功能在应用中是一个常用模块,此次使用 HarmonyOS 实现登录流程,包含页面呈现与网络请求。 二、页面呈现 三、实现流程 3.1、创建项目 构建一个ArkTS应用项目(Stage模型),今天创建流程可查看官网教程:文档中心 目…

反射面试题

反射的优点:提高Java程序的灵活性和扩展性,降低了耦合性,提高自适应能力。 允许创建和控制任意类对象,无需提前硬编码目标类 缺点: 反射的性能低 反射机制主要在对灵活性和扩展性要求很高的系统框架上。 放射会模糊内部…

Java学习笔记002——类的修饰符

在Java语言中,类的访问修饰符决定了其它类能够访问该类的方式。类有如下4种访问修饰符,在创建类时用于类的声明: 1、public: 当一个类被声明为public时,它可以从任何其他类中被访问,无论这些类位于哪个包中。通常&am…

ChatGPT引领的AI面试攻略系列:AI全栈工程师篇

系列文章目录 AI全栈工程师(本文) 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理(NLP)7. 多模态学习8. AI生成内容(AIGC&am…