鸿蒙组件样式复用简介

server/2024/11/26 4:51:49/

鸿蒙组件样式复用简介

  • 使用@Style进行复用
  • 在Component内部复用
  • 在Component外部复用
  • 使用@Extend复用指定类型组件
  • @Extend支持参数传递

使用@Style进行复用

在页面开发过程中,会遇到多个组件都在使用相同的样式,这时候就要考虑是不是可以将相同的样式的进行复用。

现在看下如下代码

@Entry
@Component
struct Style {build() {Column({space:20}){Text('Text......').width('60%').height(50).backgroundColor(Color.Red).fontColor(Color.White).fontSize(20).fontWeight(FontWeight.Bold)Button('Button',{type: ButtonType.Capsule}).width('60%').height(50).backgroundColor(Color.Red).fontSize(20).fontWeight(FontWeight.Bold)}.width('80%').height('100%').justifyContent(FlexAlign.Center)}
}

在上面代码中,Text和Button都有相同的样式,我们可以使用@Style对上述代码进行复用。

在Component内部复用

可以将@Style修饰的方法放在build方法后面

@Entry
@Component
struct Style {build() {Column({space:20}){Text('Text......').commenStyle().fontColor(Color.White).fontSize(20).fontWeight(FontWeight.Bold)Button('Button',{type: ButtonType.Capsule}).commenStyle().fontSize(20).fontWeight(FontWeight.Bold)}.width('80%').height('100%').justifyContent(FlexAlign.Center)}@StylescommenStyle(){.width('60%').height(50).backgroundColor(Color.Red)}
}

在使用的时候,直接跟在组件后面。

在Component外部复用

如果页面上定义了多个Component,这个时候复用的样式可以考虑定义在Component外部,这样做的目的是每个Component都能调用复用组件。

@Entry
@Component
struct Style {build() {Column({space:20}){Text('Text......').commenStyleG().fontColor(Color.White).fontSize(20).fontWeight(FontWeight.Bold)Button('Button',{type: ButtonType.Capsule}).commenStyleG().fontSize(20).fontWeight(FontWeight.Bold)}.width('80%').height('100%').justifyContent(FlexAlign.Center)}}@Styles function commenStyleG() {.width('60%').height(50).backgroundColor(Color.Red)
}

**备注:**使用@Style定义的组件,只能接受组件通用信息,通用信息可在API Reference里面的ArkTS处查找;@Style不能接受自定义参数。

请添加图片描述

使用@Extend复用指定类型组件

@Extend跟@Style不同,@Extend只能复用指定类型组件。

先看如下代码

@Entry
@Component
struct Style {build() {Column({space:20}){Button('Button1',{type: ButtonType.Capsule}).width('60%').height(50).backgroundColor(Color.Green).fontSize(20).fontWeight(FontWeight.Bold)Button('Button2',{type: ButtonType.Capsule}).width('60%').height(50).backgroundColor(Color.Red).fontSize(20).fontWeight(FontWeight.Bold)}.width('80%').height('100%').justifyContent(FlexAlign.Center)}
}

在这里插入图片描述

上述代码中存在大量重复代码,并且都是Button这种类型的,有通用也有不是通用的。

此时可以考虑使用@Extend来进行复用

将上述代码简化为如下:

@Entry
@Component
struct Style {build() {Column({space:20}){Button('Button1',{type: ButtonType.Capsule}).buttonStyle()Button('Button2',{type: ButtonType.Capsule}).buttonStyle()}.width('80%').height('100%').justifyContent(FlexAlign.Center)}
}
@Extend(Button) function buttonStyle(){.width('60%').height(50).backgroundColor(Color.Red).fontSize(20).fontWeight(FontWeight.Bold)
}

在这里插入图片描述

使用Extend复用后,发现之前设置的背景色也全部变成一样;这时候,就需要考虑对Extend复用信息进行传参。

@Extend支持参数传递

此处,需要将buttonStyle进行改造。

@Extend(Button) function buttonStyle(color:ResourceColor,height: Length){.width('60%').height(height).backgroundColor(color).fontSize(20).fontWeight(FontWeight.Bold)
}

改造后,可以在使用的时候,传入背景色和高度

@Entry
@Component
struct Style {build() {Column({space:20}){Button('Button1',{type: ButtonType.Capsule}).buttonStyle(Color.Green,70)Button('Button2',{type: ButtonType.Capsule}).buttonStyle(Color.Red,30)}.width('80%').height('100%').justifyContent(FlexAlign.Center)}
}

在这里插入图片描述


http://www.ppmy.cn/server/38294.html

相关文章

【C语言】路漫漫其修远兮,深入[指针]正当下

一. 指针初步 1.概念定义 地址:我们在内存中开辟空间时,为了方便后续访问,每个数据有确切的地址。 指针:指向数据的地址,并将其地址储存在指针变量中。 2.基本运算符 • 取地址操作符(&) …

魔改IDEA,让你的IDEA 好看到爆炸!!!

超简单易学的style风格 在文章开篇,先show两张个人最喜欢的IDEA style 对我们程序员开发来说,IDEA 默认设置,虽然不丑,但就是太单调,千篇一律。 故而我在网上寻寻觅觅,终于在不断试错后,找到了…

【Linux】搭建私有yum仓库(类阿里云)

在搭建本地yum仓库并配置国内镜像阿里云源中了解yum源 yum : Yellow dog Updater,Modified,是一种基于rpm包的自动升级和软件包管理工具。yum能从指定的服务器自动下载rpm包并安装,自动计算出程序之间的依赖关系和软件安装的步骤&…

CBM9002A-56ILG替代CY7C68013A-56LTXC

CBM9002A系列是基于符合工业标准的增强型8051内核的USB型微控制器。支持USB2.0协议高速480Mbps以及全速12Mbps两种模式。 增强型8051可工作在48、24、12MHz频率下;每个指令周期为4个时钟,是标准8051速度的3倍。CBM9002A系列内置高达16K字节的片上SRAM空间&#xff0…

(1)探索 SpringAI - 基本概述

人工智能简介 A system is ability to correctly interpret external data, to learn from such data, and to use those learnings to achieve specific goals and tasks through flexible adaptation. 翻译:系统正确解释外部数据的能力,从这些数据中学…

渗透 如何防御ARP欺骗,LLMNR-MDNS-NBNS等协议的作用

一. 如何防御ARP欺骗? 1.使用双向IP/MAC绑定; 2.使用静态ARP缓存表; 3.使用ARP服务器,通过服务器来查找ARP转换表来响应其他机器的广播; 4.使用ARP欺骗防护软件; 5.在网关设备上部署防ARP欺骗攻击功能…

1553B总线接口仿真卡,1553B IP核,适用于航空机载,飞机综合航电等领域

1553B总线接口卡可作为通讯或仿真测试板卡使用,支持USB,PCI,PXI,CPCI,以太网,RS422,RS485等计算机总线平台,单功能(1个BC、0-31个RT和1个BM,当前仅可单工作模…

常用的预编码算法学习

一、概况 预编码算法的常用实现方式有以下几种: 1. 间隔预编码(Interval Pre-coding):该算法将原始数据分成若干个间隔,然后对每个间隔内的数据进行编码。间隔的长度可以根据具体情况进行选择,常见的间隔长度有固定长度和可变长度两种方式。 2. 迭代预编码(Iterative…