0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony自定义组件

ArkUI详解 来源:ArkUI详解 作者:ArkUI详解 2022-12-08 12:26 次阅读

自定义组件

@Builder

可通过@Builder装饰器进行描述,该装饰器可以修饰一个函数,此函数可以在build函数之外声明,并在build函数中或其他@Builder修饰的函数中使用,从而实现在一个自定义组件内快速生成多个布局内容。

@BuilderParam

@BuilderParam装饰器用于修饰自定义组件内函数类型的属性(例如: @BuilderParam noParam: () => void),并且在初始化自定义组件时被@BuilderParam修饰的属性必须赋值。

开发者在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,引入了@BuilderParam装饰器,此装饰器修饰的属性值可为@Builder装饰的函数,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。

@Styles

ArkTS为了避免开发者对重复样式的设置,通过@Styles装饰器可以将多个样式设置提炼成一个方法,直接在组件声明时调用,通过@Styles装饰器可以快速定义并复用自定义样式。当前@Styles仅支持通用属性。

@Styles function globalFancy () {
  .width(150)
  .height(100)
  .backgroundColor(Color.Pink)
}
​
Text('坚果')
        .globalFancy()
        .fontSize(30)

@Extend

@Extend装饰器将新的属性方法添加到Text、Column、Button等内置组件上,通过@Extend装饰器可以快速地扩展原生组件。注意的是@Extend不能定义在自定义组件struct内。

// xxx.ets
@Extend(Text) function fancy (fontSize: number) {
  .fontColor(Color.Red)
  .fontSize(fontSize)
  .fontStyle(FontStyle.Italic)
  .fontWeight(600)
}
​
Text("坚果")
        .fancy(24)

@CustomDialog

@CustomDialog装饰器用于装饰自定义弹窗组件,使得弹窗可以动态设置内容及样式。

@CustomDialog
struct DialogExample {
  controller: CustomDialogController
  action: () => void
​
  build() {
    Row() {
      Button('自定义dialog')
        .onClick(() => {
          this.controller.close()
          this.action()
        })
    }.padding(20)
  }
}
​
​
@Entry
@Component
struct AboutPage {
  @State message: string = 'Hello World'
  dialogController: CustomDialogController = new CustomDialogController({
    builder: DialogExample({ action: this.onAccept }),
    cancel: this.existDialog,
    autoCancel: true
  });
  onAccept() {
    console.info('onAccept');
  }
​
  existDialog() {
    console.info('Cancel dialog!');
  }
​
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold) .onClick(() => {
          this.dialogController.open()
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自定义组件
    +关注

    关注

    0

    文章

    2

    浏览量

    5977
  • OpenHarmony
    +关注

    关注

    23

    文章

    3311

    浏览量

    15159
收藏 人收藏

    评论

    相关推荐

    OpenHarmony应用开发之自定义弹窗

    以​​橘子购物​​中一个应用更新提示的弹窗介绍OpenHarmony自定义弹窗。 接口 自定义弹窗官方文档:​​自定义弹窗-弹窗-全局UI方法-
    发表于 09-06 14:40

    OpenHarmony自定义组件介绍

    一、创建自定义组件 在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为
    发表于 09-25 15:36

    OpenHarmony自定义构建函数:@Builder装饰器

    前面章节介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定,仅与使用方进行数据传递。ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数
    发表于 09-26 16:36

    OpenHarmony装饰指定自定义组件:@BuilderParam装饰器

    当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在
    发表于 09-27 16:02

    鸿蒙上自定义组件的过程

       在实际开发过程中,我们经常会遇到一些系统原有组件无法满足的情况,而 HarmonyOS 提供了自定义组件的方式,我们使用自定义组件来满
    的头像 发表于 11-10 09:27 2321次阅读
    鸿蒙上<b class='flag-5'>自定义</b><b class='flag-5'>组件</b>的过程

    OpenHarmony自定义组件:ClearableInput和Keyboard

    组件介绍: 本示例包含了两个OpenHarmony自定义组件,一个是ClearableInput,另一个是Keyboard。 ClearableInput
    发表于 03-18 15:21 1次下载
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定义</b><b class='flag-5'>组件</b>:ClearableInput和Keyboard

    OpenHarmony自定义组件FlowImageLayout

    组件介绍 本示例是OpenHarmony自定义组件FlowImageLayout。 用于将一个图片列表以瀑布流的形式显示出来。 调用方法
    发表于 03-21 10:17 3次下载
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定义</b><b class='flag-5'>组件</b>FlowImageLayout

    OpenHarmony自定义组件圆形图像案例

    圆形图像
    发表于 03-22 11:29 1次下载

    OpenHarmony自定义组件ProgressWithText

    组件介绍 本示例是OpenHarmony自定义组件ProgressWithText。 在原来进度条的上方加了一个文本框,动态显示当前进度并调整位置。 调用方法
    发表于 03-23 14:03 1次下载
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定义</b><b class='flag-5'>组件</b>ProgressWithText

    OpenHarmony自定义组件CircleProgress

    组件介绍 本示例是OpenHarmony自定义组件CircleProgress。 用于定义一个带文字的圆形进度条。 调用方法
    发表于 03-23 14:06 4次下载
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定义</b><b class='flag-5'>组件</b>CircleProgress

    基于openharmony适配移植的自定义SeekBar库

    项目介绍 项目名称:IndicatorSeekBar 所属系列:openharmony的第三方组件适配移植 功能:这是一个openharmony自定义可滑动进度条库。 项目移植状态:主
    发表于 03-24 09:37 3次下载

    三种自定义弹窗UI组件封装的实现

    鸿蒙已经提供了全局 UI 方法自定义弹窗,本文是基于基础的自定义弹窗来实现提示消息弹窗、确认弹窗、输入弹窗的 UI 组件封装。
    的头像 发表于 03-30 09:28 2539次阅读

    适用于鸿蒙的自定义组件框架Carbon案例教程

    项目名称:Carbon 所属系列:ohos的第三方组件适配移植 功能:一个适用于鸿蒙的自定义组件框架,帮助快速实现各种需要的效果 项目移植状态:大部分移植 调用差异:基本没有使用差异,可以参照
    发表于 04-07 09:49 5次下载

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲b
    发表于 04-08 10:48 14次下载

    鸿蒙ArkUI实例:【自定义组件

    组件OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自
    的头像 发表于 04-08 10:17 155次阅读