首页 > 其他分享 >【HarmonyOS】自定义组件之ArkUI实现通用标题栏组件

【HarmonyOS】自定义组件之ArkUI实现通用标题栏组件

时间:2023-05-04 10:22:05浏览次数:36  
标签:自定义 attribute 100% 标题栏 height text 组件

 【关键字】

标题栏、常用内置组件整合、ArkUI、自定义组件

 

1、写在前面

在上一篇文章中我们通过Java语言实现了一个通用的标题栏组件,有需要的可以看下,文章地址:

https://developer.huawei.com/consumer/cn/forum/topic/0202117373459738584?fid=0101587866109860105

现在很多朋友都已经转战ArkTS语言了,那么今天就来使用ArkTS实现一个同样的通用标题栏组件,样式选择还和之前保持一致,左侧文本按钮、中间文本、右侧图片按钮,关于样式,大家可以自行根据项目实际需求进行修改,废话不多说,下面进入代码实战吧!

2、自定义标题栏

首先,新建一个CommonTitleBar.ets文件,在该文件中封装通用标题栏组件:

cke_501.png

然后,定义标题栏组件需要的相关属性:

cke_1153.png

最后,在标题栏组件类中使用内置组件拼装组合,创建上面定义的属性类的类型的变量,在内置组件中的相应属性通过该变量控制,如下图所示:

cke_1999.png

完整的自定义标题栏组件代码如下:

@Component
export struct CommonTitleBar {
  // 标题栏属性
  public attribute: CommonTitleBarAttribute;

  build() {
    Flex() {
      Stack({ alignContent: Alignment.Start }) {
        Text(this.attribute.close_text)
          .fontSize(16)
          .width(60)
          .height('100%')
          .onClick(() => {
            this.attribute.closeCallback?.call(this)
          })
      }
      .padding({ left: 15 })
      .layoutWeight(1)

      Stack({ alignContent: Alignment.Center }) {
        Text(this.attribute.title_text)
          .fontSize(16)
          .fontColor('#0000ff')
          .width(60)
          .textAlign(TextAlign.Center)
          .height('100%')
      }
      .layoutWeight(2)

      Stack({ alignContent: Alignment.End }) {
        Image($r('app.media.menu'))
          .width(40)
          .height(40)
          .objectFit(ImageFit.Contain)
          .onClick(() => {
            this.attribute.menuCallback?.call(this)
          })
      }
      .padding({ right: 15 })
      .height('100%')
      .layoutWeight(1)
    }
    .width('100%')
    .height(48)
    .backgroundColor(this.attribute.bg_color)
  }
}

// 定义标题栏属性
class CommonTitleBarAttribute {
  public bg_color: string = ""; // 标题栏背景色

  public close_text: string = ""; // 关闭按钮文字
  public closeCallback: () => void; // 关闭按钮事件回调

  public title_text: string = ""; // 标题文字

  public menuCallback: () => void; // 菜单按钮事件回调
}

3、使用标题栏组件

上面定义好了标题栏组件,下面开始在别的页面引用该组件,在首页Index.ets中引用,首先导入该组件:

cke_5402.png

然后引用该组件,为组件配置相应的属性值:

cke_7898.png

完整代码如下:

import prompt from '@ohos.prompt';
import { CommonTitleBar } from './CommonTitleBar';

@Entry
@Component
struct Index {
  build() {
    Column() {
      CommonTitleBar({attribute:{
        bg_color:'#ff2ad4b2',
        close_text: '返回',
        closeCallback:()=>{
          prompt.showToast({
            message: '点击返回按钮',
            duration: 2000
          });
        },
        title_text: '标题',
        menuCallback:()=>{
          prompt.showToast({
            message: '点击菜单按钮',
            duration: 2000
          });
        }
      }})
      Text('内容')
        .fontSize(20)
        .textAlign(TextAlign.Center)
        .width('100%')
        .height('100%')
    }
    .width('100%')
    .height('100%')
  }
}

最后一起来看一下实现的效果吧:

cke_12936.pngcke_14700.png

 

 

 

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

标签:自定义,attribute,100%,标题栏,height,text,组件
From: https://www.cnblogs.com/developer-huawei/p/17370303.html

相关文章

  • 自定义函数实现分组统计
    1.通过自定义的函数实现分组统计: 2.自定义函数,对索引进行修改取不同产品名称的数量: ......
  • 魔兽世界服务端自定义添加NPC教程
    魔兽世界自定义NPC教程大家好,我是艾西今天跟大家聊一下自定义NPC,自定义NPC可以添加自己想要售卖的物品以及定价等可以更好的将一个游戏设定以及游戏的拓展性有质的提升creature表是游戏所有生物人物等表格Creature_template是所有生物模板,根据生物模板可以创建很多的生物。我们在某......
  • 【SpringBoot系列】三、SpringBoot特性_SpringApplication类(自定义Banner)
        SpringApplication类作为SpringBoot最基本、最核心的类,在main方法中用来启动SpringBoot项目。一般情况下,只需在main方法中使用SpringApplication.run静态方法来启动项目:packagecom.xcbeyond.springboot;importorg.springframework.boot.SpringApplication;importorg.......
  • BootstrapBlazor组件保姆级教程
    BootstrapBlazor组件库保姆级使用教程BootstrapBlazor组件库官网https://www.blazor.zone/componentsBootstrapBlazor组件库github仓库地址https://github.com/dotnetcore/BootstrapBlazorBootstrapBlazor组件库gitee仓库地址https://gitee.com/LongbowEnterprise/Bootstra......
  • PowerShell-自定义的配置文件
    PowerShell5.1一般Windows10自带的是这个版本的PowerShell,这个版本的自定义配置文件的文件编码要保存为ANSI才行。PowerShell7这个是通过github另外下载的,这个版本的自定义配置文件的文件编码要保存为utf-8才行。 配置文件代码其实也没啥,主要加了一个时间显示和我可能用......
  • vue2实现数据聚合【scatter-clustering】组件封装
    实现如下效果:效果展示:https://code.juejin.cn/pen/7228568245148581943如果不会请移步到官网的栗子,请点击查看直接给大家上代码:整体代码片段1<template>2<divref="echarts"style="width:100%;height:300px;"></div>3</template>4<scrip......
  • 第11讲 AXI_FULL自定义总线详解
    DDR3 IP基础知识  (1条消息)快速上手XilinxDDR3IP核----汇总篇(MIG)_ddr3xilinx_孤独的单刀的博客-CSDN博客DDR3_MIG_TB   moduletop(  output    [31:0]   c);localparam[15:0]  a=65535;localparam[15:0]  b=25687;assignc=a*......
  • 用vue2封装轮播图组件
    日常练习用vue2封装轮播图组件,传入图片信息数组。实现思想:图片组添加translate动画,通过轮播到第几张图片作为参数,让图片组整体移动。Carousel.vue<template><divclass="carousel"><divclass="carouselList"><!--图片列表--><ulclass="img&quo......
  • TMVCActiveRecord捕获异常信息,自定义输出
    TMVCActiveRecord.CurrentConnection.StartTransaction;try//doTMVCActiveRecord.CurrentConnection.Commit;Render(201,'CreateSuccessfully','');exceptonE:ExceptiondobeginTMVCActiveRecord.CurrentCo......
  • OSG 使用整理(3):自定义漫游器动画
    自定义漫游器动画1相机视图矩阵1.1  坐标系统 (1)局部坐标系:以三维物体中的某个原点建立顶点比较方便,事实上一个复杂物体可能有多个局部坐标系,每个局部坐标系用于其某个部位。通过一组平移、旋转和缩放变换的组合,可以将局部坐标系变换到世界坐标系。(2)世界坐标系:为了定义所......