当前位置: 首页 > news >正文

【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景

@Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。

概述

stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下四种状态:

  • focused:获焦态。
  • normal:正常态。
  • pressed:按压态。
  • disabled:不可用态。
  • selected10+:选中态。

使用场景

基础场景

下面的示例展示了stateStyles最基本的使用场景。Button处于第一个组件,默认获焦,生效focused指定的粉色样式。按压时显示为pressed态指定的黑色。如果在Button前再放一个组件,使其不处于获焦态,就会生效normal态的黄色。

@Entry
@Component
struct StateStylesSample {
  build() {
    Column() {
      Button('Click me')
        .stateStyles({
          focused: {
            .backgroundColor(Color.Pink)
          },
          pressed: {
            .backgroundColor(Color.Black)
          },
          normal: {
            .backgroundColor(Color.Yellow)
          }
        })
    }.margin('30%')
  }
}

图1 获焦态和按压态  

@Styles和stateStyles联合使用

以下示例通过@Styles指定stateStyles的不同状态。

@Entry
@Component
struct MyComponent {
  @Styles normalStyle() {
    .backgroundColor(Color.Gray)
  }  @Styles pressedStyle() {
    .backgroundColor(Color.Red)
  }  build() {
    Column() {
      Text('Text1')
        .fontSize(50)
        .fontColor(Color.White)
        .stateStyles({
          normal: this.normalStyle,
          pressed: this.pressedStyle,
        })
    }
  }
}

图2 正常态和按压态  

在stateStyles里使用常规变量和状态变量

stateStyles可以通过this绑定组件内的常规变量和状态变量。

@Entry
@Component
struct CompWithInlineStateStyles {@State focusedColor: Color = Color.Red;normalColor: Color = Color.Green  build() {Button('clickMe').height(100).width(100)
      .stateStyles({normal: {.backgroundColor(this.normalColor)},
        focused: {.backgroundColor(this.focusedColor)}})
      .onClick(() => {
        this.focusedColor = Color.Pink})
      .margin('30%')}
}

Button默认获焦显示红色,点击事件触发后,获焦态变为粉色。

图3 点击改变获焦态样式  

http://www.lryc.cn/news/179590.html

相关文章:

  • Qt扩展-QCustomPlot绘图基础概述
  • 二、局域网联机
  • 决策树剪枝:解决模型过拟合【决策树、机器学习】
  • Ubuntu部署运行ORB-SLAM2
  • 二十,镜面IBL--打印BRDF积分贴图
  • 自动驾驶:未来的道路上的挑战与机遇
  • Go 语言 iota 的神奇力量
  • 前端开发和后端开发的一些建议
  • 基于 SpringBoot+Vue 的教室人事档案管理系统
  • Lua学习笔记:require非.lua拓展名的文件
  • Python 编程基础 | 第三章-数据类型 | 3.3、浮点数
  • beego---ORM相关操作
  • 【网络原理】初始网络,了解概念
  • 对象存储,从单机到分布式的演进
  • 结构型设计模式——桥接模式
  • keepalived的vip实现nginx节点的主备
  • C++之std::atomic解决多线程7个问题(二百四)
  • tailwindcss 如何在 uniapp 中使用
  • oracle-使用PLSQL工具自行修改用户密码
  • 自动驾驶技术:现状与未来
  • C++ 类构造函数 析构函数
  • C++标准模板(STL)- 输入/输出操纵符-(std::get_time,std::put_time)
  • 蓝桥等考Python组别九级004
  • gitee 远程仓库操作基础(二)
  • Scala第四章节
  • 【C++入门指南】类和对象(上)
  • web:[极客大挑战 2019]PHP
  • Firefox 开发团队对 Vue 3 进行优化效果显著
  • 【Verilog 教程】6.5 Verilog避免Latch
  • 怒刷LeetCode的第21天(Java版)