首页 > 其他分享 >《跟我一起学“Harmony-ArkTS”》——常用组件及其属性和事件

《跟我一起学“Harmony-ArkTS”》——常用组件及其属性和事件

时间:2024-12-08 23:58:06浏览次数:6  
标签:Index ArkTS struct Text Component Harmony 组件 build

一、文本组件

  1. Text是文本组件,通常用于展示用户视图,如显示文章的文字。
  2. Text可通过以下两种方式来创建:

string字符串

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('我是字符串')
    }
  }
}

引用Resource资源
资源引用类型可以通过$r创建Resource类型对象,文件位置为 /resources/base/element/string.json

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text($r('app.string.string'))
    }
  }
}
  1. 文本组件的属性
属性描述
fontSize字体大小
fontColor字体颜色
fontStyle字体样式
fontWeight字体粗细
lineHeight文本行高
decoration文本修饰线及颜色
textAlign水平方向Text对齐方式
align垂直方向对齐方式
textIndent文本首行缩进
textOverflow设置文本超长时的显示方式
maxLines设置文本的最大行数
  1. 字体大小
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('字体⼤⼩')
        .fontSize(30)
    }
  }
}
  1. 字体颜色
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('字体颜⾊1')
        .fontColor(Color.Pink)
      Text('字体颜⾊2')
        .fontColor('#ff0000')
      Text('字体颜⾊3')
        .fontColor('rgb(0, 255, 255)')
      // 半透明
      Text('字体颜⾊4')
        .fontColor('rgba(0, 255, 255, 0.5)')
    }
  }
}
  1. 字体样式

参数:枚举 FontStyle
Normal :正常字体(不倾斜)
Italic :斜体

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('倾斜字体')
        .fontStyle(FontStyle.Italic)
    }
  }
}
  1. 字体粗细

参数:
[100, 900],取值越大,字体越粗,默认值为 400
枚举 FontWeight
Lighter:字体较细
Normal:字体粗细正常,默认值
Regular:字体粗细正常
Medium:字体粗细适中
Bold:字体较粗
Bolder:字体非常粗

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('邹小瑜')
        .fontWeight(900)
        .fontSize(30)
      Text('字体粗细1')
        .fontWeight(FontWeight.Bolder)
        .fontSize(30)
      Text('字体粗细2')
        .fontWeight(FontWeight.Bold)
        .fontSize(30)
    }
  }
}
  1. 文本行高
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('HarmonyOS是新⼀代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统⼀的语⾔。带来简洁,流畅,连续,安全可靠的全场景交互体验。')
        .lineHeight(40)
    }
  }
}
  1. 文本修饰

参数: {}
type:修饰线类型, TextDecorationType (枚举)
None:无
Underline:下划线
LineThrough:删除线
Overline:顶划线
color:修饰线颜色,可选,默认为黑色

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('⽂本修饰线-删除线')
        .decoration({
          type: TextDecorationType.LineThrough,
          color: '#888'
        })
        .fontColor('#999')
      Text('⽂本修饰线')
        .decoration({
          type: TextDecorationType.Underline
        })
    }
  }
}
  1. 文本水平对齐方式

参数:枚举 TextAlign
Start:左对齐,默认值
Center:居中
End:右对齐

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('左对⻬')
        .width(200)
        .height(50)
        .backgroundColor(Color.Orange)
        .textAlign(TextAlign.Start)
      Text('右对⻬')
        .width(200)
        .height(50)
        .backgroundColor('#d3f2e3')
        .textAlign(TextAlign.End)
    }
  }
}
  1. 文本垂直对齐方式

参数: 枚举 Alignment
Top: 顶对齐
Center: 垂直居中,默认值
Bottom: 底对齐

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('顶对⻬')
        .width(200)
        .height(100)
        .textAlign(TextAlign.Center)
        .align(Alignment.Top)
      Text('居中对⻬')
        .width(200)
        .height(100)
        .backgroundColor(Color.Orange)
        .textAlign(TextAlign.Center)
        .align(Alignment.Center)
      Text('底对⻬')
        .width(200)
        .height(100)
        .textAlign(TextAlign.Center)
        .align(Alignment.Bottom)
    }
  }
}
  1. 文本首行缩进
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('HarmonyOS是新⼀代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统⼀的语⾔。带来简洁,流畅,连续,安全可靠的全场景交互体验。')
        .fontSize(14)
        .textIndent(28)
    }
  }
}
  1. 文本超长显示方式

参数: {overflow: TextOverflow} , TextOverflow 为枚举类型
None:文本超长时裁剪显示
Clip:文本超长时进行裁剪显示
Ellipsis:文本超长时显示不下的文本用省略号代替
MARQUEE:文本超长时以跑马灯的方式展示(滚动显示)

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('HarmonyOS是新⼀代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统⼀的语⾔。带来简洁,流畅,连续,安全可靠的全场景交互体验。')
        .fontSize(14)
        .textIndent(28)
        .maxLines(2)
          // 超⻓⽂本使⽤省略号代替
        .textOverflow({overflow: TextOverflow.Ellipsis})
          // 裁剪超⻓⽂本
        .textOverflow({overflow: TextOverflow.Clip})
          // 超⻓⽂本滚动显示
        .textOverflow({overflow: TextOverflow.MARQUEE})
    }
  }
}

注意: 使用textOverflow配合maxLines实现文本溢出显示省略号效果。

  1. Span子组件
    Span只能作为TextRichEditor组件的子组件显示文本内容。可以在一个Text内添加多个Span来显示一段信息,例如产品说明书、承诺书等。
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('我是Text') {
        Span('我是Span')
      }
      .padding(10)
      .borderWidth(1)
    }
  }
}

注意: Span组件需要写到Text组件内,单独写Span组件不会显示信息,Text与Span同时配置文本内容时,Span内容覆盖Text内容

  1. Span设置文本装饰线及颜色
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text() {
        Span('我是Span1,').fontSize(16).fontColor(Color.Grey)
          .decoration({ type: TextDecorationType.LineThrough, color: Color.Red })
        Span('我是Span2').fontColor(Color.Blue).fontSize(16)
          .fontStyle(FontStyle.Italic)
          .decoration({ type: TextDecorationType.Underline, color: Color.Black })
        Span(',我是Span3').fontSize(16).fontColor(Color.Grey)
          .decoration({ type: TextDecorationType.Overline, color: Color.Green })
      }
      .borderWidth(1)
      .padding(10)
    }
  }
}
  1. Span通过textCase设置文字一直保持大写或者小写状态
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text() {
        Span('I am Upper-span').fontSize(12)
          .textCase(TextCase.UpperCase)
      }
      .borderWidth(1)
      .padding(10)
    }
  }
}
  1. 添加事件
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text() {
        Span('I am Upper-span').fontSize(12)
          .textCase(TextCase.UpperCase)
          .onClick(()=>{
            console.info('我是Span——onClick')
          })
      }
    }
  }
}

注意: 由于Span组件无尺寸信息,事件仅支持添加点击事件onClick

  1. 其他属性和事件
    文本组件(Text)的更多属性和事件可以通过Text官方文档或者API进行查阅,本篇只对常用的属性和事件进行介绍。

二、文本输入框组件

TextInput、TextArea是输入框组件,通常用于响应用户的输入操作,比如评论区的输入、聊天框的输入、表格的输入等,也可以结合其它组件构建功能页面,例如登录注册页面。

  1. TextInput为单行输入框、TextArea为多行输入框
@Entry
@Component
struct Index {
  build() {
    Column() {
      TextInput()
      TextArea()
    }
  }
}

注意: 多行输入框文字超出一行时会自动折行。

  1. 输入框类型
    TextInput有9种可选类型,分别为Normal基本输入模式Password密码输入模式Email邮箱地址输入模式Number纯数字输入模式PhoneNumber电话号码输入模式USER_NAME用户名输入模式NEW_PASSWORD新密码输入模式NUMBER_PASSWORD纯数字密码输入模式NUMBER_DECIMAL带小数点的数字输入模式。通过type属性进行设置。
@Entry
@Component
struct Index {
  build() {
    Column() {
      TextInput()
        .type(InputType.Normal)
      TextInput()
        .type(InputType.Password)
    }
  }
}
  1. 其他属性和事件
    文本输入框组件的属性和事件与文本组件类似,这里就不在详细列举,可以参考上述文本组件的属性和事件或者查看TextInput官方文档TextArea官方文档及其API即可。

三、图片组件

Image支持多种图片格式,包括png、jpg、bmp、svg、gif和heif。

  1. Image组件属性
属性描述
width宽度(通用属性)
height高度(通用属性)
aspectRatio宽高比(通用属性)
alt加载时显示的占位图,支持本地图片(png、jpg、bmp、svg和gif类型),不支持网络图片
objectFit设置图片的填充效果,默认值:ImageFit.Cover
  1. 宽高

width :组件宽度,取值数字或百分比
height :组件高度,取值数字或百分比
aspectRatio :组件宽高比,宽度/高度

@Entry
@Component
struct Index {
  build() {
    Column() {
      // 本地图⽚ 正⽅形图添加 aspectRatio 属性,宽⾼⽐例为 1:1
      Image($r('app.media.dog'))
        .width(200)
        .aspectRatio(1)
      // ⽹络图⽚
      Image('https://developer.huawei.com/images/logo-developer-header.svg')
        .width(200)
          // ⻓⽅形图⽚设置宽⾼⽐1:1, 会导致图⽚显示不全
        .aspectRatio(1)
    }
  }
}

注意: 引入网络图片需申请权限ohos.permission.INTERNET,具体申请方式请参考 权限声名

  1. 占位
@Entry
@Component
struct Index {
  build() {
    Column() {
      Image('https://developer.huawei.com/images/logo-developer-header.svg')
        .width(200)
          // 加载时显示的占位图
        .alt($r('app.media.startIcon'))
    }
  }
}
  1. 图片填充

参数类型:枚举 ImageFit
Contain:图片宽或高缩放到与组件尺寸相同则停止缩放,可能导致组件有空白(等比缩放)
Cover:默认效果,图片缩放到完全覆盖组件范围,可能导致图片显示不完整(等比缩放)
Fill:图片缩放到充满组件(不等比缩放)

@Entry
@Component
struct Index {
  build() {
    Column() {
      Image($r('app.media.dog'))
        .width(200)
        .height(100)
        .backgroundColor(Color.Pink)
          // 图⽚宽或⾼缩放到与组件尺⼨相同则停⽌缩放,可能导致组件有空⽩(等⽐缩放)
        .objectFit(ImageFit.Contain)
          // 默认:图⽚缩放到完全覆盖组件范围,可能导致图⽚显示不完整(等⽐缩放)
        .objectFit(ImageFit.Cover)
          // 图⽚缩放⾄充满组件(不等⽐缩放)
        .objectFit(ImageFit.Fill)
    }
  }
}
  1. 其他属性和事件
    图片组件(Image)的其他属性和事件,可以参考Image官方文档或者API进行学习,这里就不在一一罗列。

四、按钮组件

Button是按钮组件,通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮。Button做为容器使用时可以通过添加子组件实现包含文字、图片等元素的按钮。

  1. 创建按钮
@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('Ok', { type: ButtonType.Normal, stateEffect: true })
        .borderRadius(8)
        .backgroundColor(0x317aff)
        .width(90)
        .height(40)
    }
  }
}

注意label用来设置按钮文字,type用于设置Button类型,stateEffect属性设置Button是否开启点击效果,borderRadius设置按钮圆角,backgroundColor设置按钮背景图案

  1. 子组件按钮
@Entry
@Component
struct Index {
  build() {
    Column() {
      Button({ type: ButtonType.Normal, stateEffect: true }) {
        Row() {
          Image($r('app.media.loading'))
            .width(20)
            .height(40)
            .margin({ left: 12 })
          Text('loading')
            .fontSize(12)
            .fontColor(0xffffff)
            .margin({ left: 5, right: 12 })
        }
        .alignItems(VerticalAlign.Center)
      }
      .borderRadius(8)
      .backgroundColor(0x317aff)
      .width(90)
      .height(40)
    }
  }
}

注意: Row是行布局,会在下一篇文章中介绍。

  1. 按钮类型
    Button有三种可选类型,分别为胶囊类型(Capsule)圆形按钮(Circle)普通按钮(Normal),通过type进行设置。
@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('胶囊按钮', { type: ButtonType.Capsule, stateEffect: false })
        .backgroundColor(0x317aff)
        .width(90)
        .height(40)
      Button('圆形按钮', { type: ButtonType.Circle, stateEffect: false })
        .backgroundColor(0x317aff)
        .width(90)
        .height(90)
      Button('普通按钮', { type: ButtonType.Normal, stateEffect: true })
        .borderRadius(8)
        .backgroundColor(0x317aff)
        .width(90)
        .height(40)
    }
  }
}
  1. 点击事件
    Button组件通常用于触发某些操作,可以绑定onClick事件来响应点击操作后的自定义行为。
@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('Ok', { type: ButtonType.Normal, stateEffect: true })
        .onClick(()=>{
          console.info('按钮被点击')
        })
    }
  }
}
  1. 其他属性和事件
    按钮组件(Button)的其他属性和事件可以通过Button官方文档或者API进行查阅,本篇只对常用的属性和事件进行介绍。

五、小结

本章言简意赅的为大家介绍了常用组件及其属性和事件,下一章,为大家介绍常用的布局,如:行布局、列布局、弹性布局等。最后,创作不易,如果大家觉得我的文章对学习鸿蒙有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家

标签:Index,ArkTS,struct,Text,Component,Harmony,组件,build
From: https://blog.csdn.net/Cool_foolisher/article/details/144276713

相关文章

  • ArkTs布局入门01——线性布局(Row/Column)
    1、概述布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。一个页面开发中,最优先的就是确定UI的布局结构,布局......
  • ArkTs布局入门02——弹性布局(Flex)
    1、概述弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。弹性布局在开发场景中用例特别多,比如页面头部导航栏的均匀分布、页......
  • ArkTs布局入门03——层叠布局(Stack)
    1、概述叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。层叠布局具有较强的页面层叠、位置......
  • 【ArkTS】列表组件的“下拉刷新”和“上拉加载”
    系列文章目录【ArkTS】关于ForEach的第三个参数键值【ArkTS】“一篇带你读懂ForEach和LazyForEach”【小白拓展】【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案”【ArkTS】一篇带你掌握“语音转文字技术”--内附详细代码【ArkTS】技能提高–“用户授......
  • 【鸿蒙开发】ArkTS --“必备”面试题
    系列文章目录【鸿蒙开发】ArkTS--“必备”面试题【鸿蒙开发】ArkTS--“必备”面试题文章目录系列文章目录前言一、什么是类型断言?二、装饰器介绍前言一、什么是类型断言?类型断言允许程序员手动指定一个值的类型。这在需要明确告诉编译器某个值的类型时非常有......
  • 鸿蒙UI开发快速入门 —— part06:组件状态管理之@State装饰器1、说在前面的话 在前五
    这篇文章是关于鸿蒙UI开发中组件状态管理的@State装饰器的介绍。包括引入状态概念构建动态交互界面,@State装饰变量特点,如与组件渲染绑定、私有且特定类型等,以及可观察的变化类型和框架行为。还通过示例介绍了@State变量的初始化流程,最后提及后续将分别介绍其他装饰器。关联......
  • 鸿蒙UI开发快速入门 —— part07:组件状态管理之@Prop/@Link装饰器
    1、前言我们在上一章学习了@State装饰器,@State装饰器的作用范围仅仅在当前组件,接下来,我们讨论如何从父组件中传入参数到子组件,让子组件随着父组件的状态发生变化。本章将要介绍的就是:@Props装饰器。2、@Props装饰器@Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的......
  • 鸿蒙UI开发快速入门 —— part05:组件的样式复用
    1、为什么要样式复用?如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,样式的复用就很有必要了。为此,鸿蒙推出了可以提炼公共样式进行复用的装饰器@Styles;2、@Styles装饰器@Styles装饰器可以将......
  • Vue组件间数据传递
    场景:页面中有搜索、列表两个组件,搜索组件传出搜索字符串,需要流入列表组件,使用页面做中转。searchbar内部弹出searchevent:this.$emit('searchevent',val);页面定义searchprocess方法响应searchevent并接收参数,赋值给自身预定义变量。页面将自带参数赋值后传入列表组件的search......
  • Vue3组件通信(父传子,子传父,跨组件通信)
    本文主要是讲述Vue3在setup语法糖下的组件间通信Vue组件通信是指在Vue.js中,不同组件之间进行信息交流和共享数据的过程。在前端开发中,组件通信是非常重要的一部分,因为在一个复杂的应用中,不同的组件通常需要相互协作,共同完成一些功能。一、父传子组件通信父组件通过props将......