当前位置:   article > 正文

鸿蒙系列--组件介绍之其他基础组件(上)_鸿蒙 blank组件

鸿蒙 blank组件

上回介绍了基础组件中最常用的组件常用的基础组件,接下来还有其他基础组件

一、Blank

描述:空白填充组件

功能:在容器主轴方向上,具有自动填充容器空余部分的能力。只有当父组件为Row/Column时生效

子组件:无

Blank(min?: number | string)

参数:

  • min:主轴上的最小大小(可选)

属性:

  • color:设置填充颜色

使用案例:

1.基础功能,用来占位,填充剩余部分

2.父组件不设置宽度时,Blank失效。可使用min来限制最小填充宽度

  1. @Entry
  2. @Component
  3. struct BlankPage {
  4. build() {
  5. Column({ space: 20 }) {
  6. // blank父组件不设置宽度时,Blank失效
  7. Row() {
  8. Text('最左边')
  9. Blank().color(Color.Red)
  10. Text('最右边')
  11. }.backgroundColor(Color.Yellow)
  12. // blank父组件不设置宽度时,可以通过设置min最小宽度填充固定宽度
  13. Row() {
  14. Text('最左边')
  15. Blank('180').color(Color.Red)
  16. Text('最右边')
  17. }.backgroundColor(Color.Yellow)
  18. }.width('100%')
  19. }
  20. }

二、Checkbox

多选框组件

功能:用于选项的打开或关闭

是否支持设置子组件:不支持

Checkbox( options?: {name?: string, group?: string} )

参数:

  • name:名称
  • group:群组名称

属性:

  • select:设置是否选中
  • selectedColor:设置选中状态颜色

事件:

  • onChange(callback: (value: boolean) => void):当选中状态发生变化时,触发该回调;value表示是否选中

使用案例:

  1. @Entry
  2. @Component
  3. struct CheckboxPage {
  4. build() {
  5. Row() {
  6. Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
  7. .select(true)
  8. .selectedColor(Color.Red)
  9. .onChange((value: boolean) => {
  10. })
  11. Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
  12. .select(false)
  13. .selectedColor(Color.Red)
  14. .onChange((value: boolean) => {
  15. })
  16. }
  17. .height('100%')
  18. }
  19. }

三、CheckboxGroup

描述:多选框群组

功能:用于控制多选框全选或者不全选状态

子组件:无

CheckboxGroup( options?: { group?: string } )

参数:

  • group:群组名称

属性:

  • selectAll:设置是否全选
  • selectedColor:设置被选中或部分选中状态的颜色

事件:

  • onChange(callback: (event: CheckboxGroupResult) => void):选中状态或群组内的Checkbox的选中状态发生变化时,触发回调

CheckboxGroupResult详解

参数:

SelectStatus:

  • All:多选择框全部选择
  • Part:多选择框部分选择
  • None:多选择框全部没有选择

使用案例:

  1. @Entry
  2. @Component
  3. struct CheckboxExample {
  4. build() {
  5. Scroll() {
  6. Column() {
  7. // 全选按钮
  8. CheckboxGroup({ group: 'checkboxGroup' })
  9. .selectedColor(0xed6f21)
  10. .onChange((itemName: CheckboxGroupResult) => {
  11. })
  12. Text('全选').fontSize(20)
  13. // 选项1
  14. Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
  15. .selectedColor(0x39a2db)
  16. .onChange((value: boolean) => {
  17. })
  18. Text('java').fontSize(20)
  19. // 选项2
  20. Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
  21. .selectedColor(0x39a2db)
  22. .onChange((value: boolean) => {
  23. })
  24. Text('ios').fontSize(20)
  25. // 选项3
  26. Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
  27. .selectedColor(0x39a2db)
  28. .onChange((value: boolean) => {
  29. })
  30. Text('H5').fontSize(20)
  31. }
  32. }
  33. }
  34. }

四、DataPanel

描述:数据统计组件

功能:用于将多个数据占比情况使用占比图进行展示

子组件:无

DataPanel(options:{values: number[], max?: number, type?: DataPanelType})

参数:

属性:

使用案例:

  1. @Entry
  2. @Component
  3. struct DataPanelExample {
  4. public result: number[] = [20, 10, 5, 10, 25, 20, 10, 10, 10]
  5. build() {
  6. Column({ space: 5 }) {
  7. DataPanel({ values: this.result, max: 100, type: DataPanelType.Circle })
  8. .width(200)
  9. .height(200)
  10. DataPanel({ values: this.result, max: 100, type: DataPanelType.Line })
  11. .width(300)
  12. .height(30)
  13. }.width('100%')
  14. .margin({ top: 5 })
  15. }
  16. }

五、DatePicker

描述:日期选择器组件

功能:根据指定范围的Date创建可以选择日期的滑动选择器

子组件:无

DatePicker(options?: {start?: Date, end?: Date, selected?: Date})

参数:

属性:

事件:

onChange(callback: (value: DatePickerResult) => void):选择日期时触发该事件

DatePickerResult详解

使用案例:

  1. @Entry
  2. @Component
  3. struct DatePickerExample {
  4. @State isLunar: boolean = false
  5. private selectedDate: Date = new Date('2023-08-08')
  6. build() {
  7. Column() {
  8. Button('切换公历农历')
  9. .margin({ top: 30 })
  10. .onClick(() => {
  11. this.isLunar = !this.isLunar
  12. })
  13. DatePicker({
  14. start: new Date('2023-1-1'),
  15. end: new Date('2024-1-1'),
  16. selected: this.selectedDate,
  17. })
  18. .lunar(this.isLunar)
  19. .onChange((value: DatePickerResult) => {
  20. this.selectedDate.setFullYear(value.year, value.month, value.day)
  21. console.info('select current date is: ' + JSON.stringify(value))
  22. })
  23. }.width('100%')
  24. }
  25. }

六、Divider

描述:分隔器组件

功能:分隔不同内容块/内容元素。

子组件:无

Divider()

属性:

使用案例:

  1. @Entry
  2. @Component
  3. struct DividerPage {
  4. build() {
  5. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
  6. //基础使用
  7. Row().width('100%').height(5).backgroundColor(Color.Red)
  8. Divider()
  9. Row().width('100%').height(5).backgroundColor(Color.Yellow)
  10. //横向分割线
  11. Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) {
  12. Text('横向1')
  13. Divider().vertical(true).margin(20).height(30)
  14. Text('横向2')
  15. Divider().vertical(true).margin(20).height(30)
  16. Text('横向3')
  17. }.width('100%')
  18. //给分割线设置参数
  19. Row().width('100%').height(5).backgroundColor(Color.Red)
  20. Divider().vertical(false).strokeWidth(5)
  21. .color(Color.Green).lineCap(LineCapStyle.Round)
  22. Row().width('100%').height(5).backgroundColor(Color.Yellow)
  23. }
  24. .width('100%')
  25. .height(350)
  26. .padding({ left: 35, right: 35, top: 35 })
  27. }
  28. }

七、Gauge

描述:环形统计图组件

功能:用于将数据展示为环形图表。

子组件:无

Gauge(options:{value: number, min?: number, max?: number})

参数:

属性:

注意:

  •  当属性和参数都可以设置value,当两者同时设置时以参数为准

ColorStop详解

颜色断点类型,用于描述渐进色颜色断点

使用案例:

  1. @Entry
  2. @Component
  3. struct GaugeExample {
  4. build() {
  5. Column({ space: 20 }) {
  6. // 默认的min和max为0-100,角度范围默认0-360,value参数中设置当前值为50
  7. Gauge({ value: 50 })
  8. .width(100).height(100)
  9. .colors([[Color.Red, 3], [Color.Green, 1], [Color.Blue, 1], [Color.Yellow, 1]])
  10. // 参数设置当前值为75,属性设置值为25,属性设置优先级高
  11. Gauge({ value: 75 })
  12. .value(25) // 以这个为准
  13. .width(100).height(100)
  14. .colors([[Color.Red, 3], [Color.Green, 1], [Color.Blue, 1], [Color.Yellow, 1]])
  15. // 其他参数和属性的应用
  16. Gauge({ value: 40, min: 0, max: 100 })
  17. .startAngle(230) //开始位置
  18. .endAngle(130) //结束位置
  19. .colors([[Color.Red, 0.3], [Color.Green, 0.1], [Color.Blue, 0.2], [Color.Yellow, 0.4]])
  20. .strokeWidth(30)
  21. .width(300)
  22. .height(300)
  23. }.width('100%').margin({ top: 100 })
  24. }
  25. }

八、ImageAnimator

描述:图片播放组价

功能:提供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长

子组件:无

ImageAnimator()

属性:

事件:

  • onStart(event: () => void) :状态回调,动画开始播放时触发

  • onPause(event: () => void):状态回调,动画暂停播放时触发

  • onRepeat(event: () => void):状态回调,动画重新播放时触发

  • onCancel(event: () => void):状态回调,动画取消播放时触发

  • onFinish(event: () => void):状态回调,动画播放完成时触发

注意:

  • 属性duration值的改变只会在下一次循环开始时生效

  • 当images中设置了单独的duration后,属性duration设置无效

  • 当设置fixedSize为true时,表示图片大小与组件大小一致,此时设置图片的width 、height 、top 和left属性是无效的;设置false表示每一张图片的 width 、height 、top和left属性都要单独设置

images设置详解:

参数类型:

Array<{

src: string,

width?: number | string,

height?: number | string,

top?: number | string,

left?: number | string,

duration?: number

}>

参数描述:

  • src:图片路径,图片格式为svg,png和jpg

  • width:图片宽度

  • height:图片高度

  • top:图片相对于组件左上角的纵向坐标

  • left:图片相对于组件左上角的横向坐标

  • duration:每一帧图片的播放时长,单位毫秒。

使用案例:

  1. @Entry
  2. @Component
  3. struct ImageAnimatorExample {
  4. @State state: AnimationStatus = AnimationStatus.Initial
  5. @State reverse: boolean = false
  6. @State iterations: number = 1
  7. build() {
  8. Column({ space:5 }) {
  9. ImageAnimator()
  10. .images([
  11. {
  12. //comment文件夹与pages同级
  13. src: $r('app.media.bg1'),
  14. duration: 500,
  15. width: 325,
  16. height: 200,
  17. top: 0,
  18. left: 0
  19. },
  20. {
  21. src: $r('app.media.bg2'),
  22. duration: 500,
  23. width: 325,
  24. height: 200,
  25. top: 0,
  26. left: 0
  27. },
  28. {
  29. src: $r('app.media.bg3'),
  30. duration: 500,
  31. width: 325,
  32. height: 200,
  33. top: 0,
  34. left: 0
  35. },
  36. {
  37. src: $r('app.media.bg3'),
  38. duration: 500,
  39. width: 325,
  40. height: 200,
  41. top: 0,
  42. left: 0
  43. }
  44. ])
  45. .state(this.state).reverse(this.reverse).fixedSize(false).preDecode(2)
  46. .fillMode(FillMode.None).iterations(this.iterations).width(325).height(210)
  47. .margin({top:100})
  48. .onStart(() => { // 当帧动画开始播放后触发
  49. console.info('Start')
  50. })
  51. .onPause(() => {
  52. console.info('Pause')
  53. })
  54. .onRepeat(() => {
  55. console.info('Repeat')
  56. })
  57. .onCancel(() => {
  58. console.info('Cancel')
  59. })
  60. .onFinish(() => { // 当帧动画播放完成后触发
  61. console.info('Finish')
  62. })
  63. Row() {
  64. Button('start').width(100).padding(5).onClick(() => {
  65. this.state = AnimationStatus.Running
  66. })
  67. Button('pause').width(100).padding(5).onClick(() => {
  68. this.state = AnimationStatus.Paused
  69. })
  70. Button('stop').width(100).padding(5).onClick(() => {
  71. this.state = AnimationStatus.Stopped
  72. })
  73. }
  74. Row() {
  75. Button('reverse').width(100).padding(5).onClick(() => {
  76. this.reverse = !this.reverse
  77. })
  78. Button('once').width(100).padding(5).onClick(() => {
  79. this.iterations = 1
  80. })
  81. Button('iteration').width(100).padding(5).onClick(() => {
  82. this.iterations = -1
  83. })
  84. }
  85. }.width('100%').height('100%').backgroundColor(0xF1F3F5)
  86. }
  87. }

九、 Marquee

描述: 跑马灯组件

功能: 用于滚动展示一段单行文本,仅当文本内容宽度超过跑马灯组件宽度时滚动

子组件:无

Marquee(value: { start: boolean, step?: number, loop?: number, fromStart?: boolean, src: string })

参数:

属性:

名称

参数类型

默认值

描述

allowScale

boolean

false

是否允许文本缩放

暂不支持该接口

事件:

名称

功能描述

onStart(event: () => void)

开始滚动时触发回调

onBounce(event: () => void)

滚动到底时触发回调

onFinish(event: () => void)

滚动完成时触发回调

使用案例:

  1. @Entry
  2. @Component
  3. struct MarqueeExample {
  4. @State start: boolean = false
  5. @State fromStart: boolean = true
  6. @State step: number = 50
  7. @State loop: number = 3
  8. @State src: string = "Running Marquee starts rolling"
  9. build() {
  10. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
  11. Marquee({
  12. start: this.start,
  13. step: this.step,
  14. loop: this.loop,
  15. fromStart: this.fromStart,
  16. src: this.src
  17. })
  18. .width(400)
  19. .fontColor(Color.White)
  20. .fontSize(50)
  21. .allowScale(false)
  22. .fontWeight(FontWeight.Bold)
  23. .backgroundColor(Color.Black)
  24. .margin({bottom:40})
  25. .onStart(() => {
  26. console.log('Marquee animation complete onStart')
  27. })
  28. .onBounce(() => {
  29. console.log('Marquee animation complete onBounce')
  30. })
  31. .onFinish(() => {
  32. console.log('Marquee animation complete onFinish')
  33. })
  34. Button('start')
  35. .onClick(() => {
  36. this.start = true
  37. })
  38. .width(200)
  39. .height(60)
  40. .margin({bottom:20})
  41. }
  42. .width('100%')
  43. .height('100%')
  44. }
  45. }

十、 Navigation

描述: 页面头部根容器

功能: 通过属性设置来展示页面的标题、工具栏、菜单

子组件:可以包含子组件

Navigation()

属性:

名称

参数类型

默认值

描述

title

string | CustomBuilder

-

页面标题

subtitle

string

-

页面副标题。

menus

Array<NavigationMenuItem> | CustomBuilder

-

页面右上角菜单

titleMode

NavigationTitleMode

NavigationTitleMode.Free

页面标题栏显示模式。

toolBar

object | CustomBuilder

-

设置工具栏内容。

items: 工具栏所有项

hideToolBar

boolean

false

设置隐藏/显示工具栏

hideTitleBar

boolean

false

隐藏标题栏

hideBackButton

boolean

false

隐藏返回键

事件:

名称

功能描述

onTitleModeChange(callback: (titleMode: NavigationTitleMode) => void)

当titleMode为NavigationTitleMode.Free时,随着可滚动组件的滑动标题栏模式发生变化时触发此回调

使用案例:

  1. @Entry
  2. @Component
  3. struct NavigationExample {
  4. @State hideBar: boolean = false
  5. @State hideTitleBar: boolean = false
  6. @Builder NavigationTitle() {
  7. Column() {
  8. Text(this.index == 0 ? "首页" : this.index == 1 ? "列表" : "更多")
  9. .width(80)
  10. .height(60)
  11. .fontColor(Color.Red)
  12. .fontSize(30)
  13. }
  14. .onClick(() => {
  15. console.log("title")
  16. })
  17. }
  18. @Builder NavigationMenus() {
  19. Row() {
  20. Image($r('app.media.bg1'))
  21. .width(25)
  22. .height(25)
  23. Image($r('app.media.bg2'))
  24. .width(25)
  25. .height(25)
  26. .margin({ left: 30 })
  27. }
  28. }
  29. @State index: number = 0
  30. // CustomBuilder类型的toolbar
  31. @Builder NavigationToolbar() {
  32. Row() {
  33. Column() {
  34. Image(this.index == 0 ? $r('app.media.bg1') : $r('app.media.bg2'))
  35. .size({ width: 25, height: 25 })
  36. Text('首页')
  37. .fontSize(16)
  38. .fontColor(this.index == 0 ? Color.Red : Color.Gray)
  39. .margin({ top: 5 })
  40. }
  41. .alignItems(HorizontalAlign.Center)
  42. .height('100%')
  43. .layoutWeight(1)
  44. .onClick(() => {
  45. this.index = 0;
  46. })
  47. Column() {
  48. Image(this.index == 1 ? $r('app.media.bg1') : $r('app.media.bg2'))
  49. .size({ width: 25, height: 25 })
  50. Text('列表')
  51. .fontSize(16)
  52. .fontColor(this.index == 1 ? Color.Red : Color.Gray)
  53. .margin({ top: 5 })
  54. }
  55. .alignItems(HorizontalAlign.Center)
  56. .height('100%')
  57. .layoutWeight(1)
  58. .onClick(() => {
  59. this.index = 1;
  60. })
  61. Column() {
  62. Image(this.index == 2 ? $r('app.media.bg1') : $r('app.media.bg2'))
  63. .size({ width: 25, height: 25 })
  64. Text('更多')
  65. .fontSize(16)
  66. .fontColor(this.index == 2 ? Color.Red : Color.Gray)
  67. .margin({ top: 5 })
  68. }
  69. .alignItems(HorizontalAlign.Center)
  70. .height('100%')
  71. .layoutWeight(1)
  72. .onClick(() => {
  73. this.index = 2;
  74. })
  75. }
  76. .width('100%')
  77. .height(50)
  78. .alignItems(VerticalAlign.Center)
  79. }
  80. build() {
  81. Column() {
  82. Navigation() {
  83. Column(){
  84. //具体内容区
  85. //可以根据具体的index 来显示不同的界面布局
  86. Text(this.index == 0 ? "首页" : this.index == 1 ? "列表" : "更多")
  87. .textAlign(TextAlign.Center)
  88. .fontSize(30)
  89. .fontColor(Color.Red)
  90. //测试按钮
  91. Row() {
  92. Button(this.hideBar ? "tool bar" : "hide tool bar")
  93. .onClick(() => {
  94. this.hideBar = !this.hideBar
  95. })
  96. Button(this.hideTitleBar ? "title bar" : "hide title bar")
  97. .onClick(() => {
  98. this.hideTitleBar = !this.hideTitleBar
  99. }).margin({ left: 50 })
  100. }.margin({ left: 35, top: 60 })
  101. }
  102. }
  103. .title(this.NavigationTitle)
  104. .menus(this.NavigationMenus)
  105. .titleMode(NavigationTitleMode.Free)
  106. .hideTitleBar(this.hideTitleBar)
  107. .hideBackButton(false)
  108. .onTitleModeChange((titleModel: NavigationTitleMode) => {
  109. console.log('titleMode')
  110. })
  111. .toolBar(this.NavigationToolbar)
  112. // .toolBar({ items: [
  113. // { value: 'app', icon: $r('app.media.bg2'), action: () => {
  114. // console.log("app")
  115. // } },
  116. // { value: 'add', icon: $r('app.media.bg2'), action: () => {
  117. // console.log("add")
  118. // } },
  119. // { value: 'collect', icon: $r('app.media.bg2'), action: () => {
  120. // console.log("collect")
  121. // } }] })
  122. .hideToolBar(this.hideBar)
  123. }
  124. }
  125. }

十一、 Progress

描述: 进度条组件

功能: 用于显示内容加载进度

子组件:无

Progress(options: {value: number, total?: number, style?: ProgressStyle, type?: ProgressType})

参数:

参数名

参数类型

必填

默认值

参数描述

value

number

-

指定当前进度值

total

number

100

指定进度总长

type

ProgressType

ProgressType.Linear

指定进度条类型

属性:

名称

参数类型

描述

value

number

设置当前进度值。

color

ResourceColor

设置进度条前景色。

style

{

strokeWidth?: Length

scaleCount?: number,

scaleWidth?: length

}

定义组件的样式。

刻度粗细大于进度条宽度时,刻度粗细为系统默认粗细。

ProgressType 样式可选类型:

名称

描述

Linear

线性

Ring

环形无刻度样式,环形圆环逐渐显示至完全填充效果

Eclipse

圆形样式,显示类似月圆月缺的进度展示效果,从月牙逐渐变化至满月

ScaleRing

环形有刻度样式,显示类似时钟刻度形式的进度展示效果

Capsule

胶囊样式,头尾两端圆弧处的进度展示效果与Eclipse相同;中段处的进度展示效果与Linear相同

style详解:

  • strokeWidth: 设置进度条宽度
  • scaleCount: 设置环形进度条总刻度数
  • scaleWidth: 设置环形进度条刻度粗细

使用案例:

  1. @Entry
  2. @Component
  3. struct ProgressExample {
  4. build() {
  5. Column({ space: 15 }) {
  6. //线性进度条
  7. Progress({ value: 50, type: ProgressType.Linear })
  8. .width(200)
  9. Progress({ value: 100, total: 150, type: ProgressType.Linear })
  10. .color(Color.Red)
  11. .value(100)
  12. .width(200)
  13. //圆形进度条
  14. Row({ space: 50 }) {
  15. Progress({ value: 50, type: ProgressType.Eclipse })
  16. .width(100)
  17. Progress({ value: 100, total: 150, type: ProgressType.Eclipse })
  18. .color(Color.Red)
  19. .value(100)
  20. .width(100)
  21. }
  22. //环形有刻度进度条
  23. Row({ space: 50 }) {
  24. Progress({ value: 50, type: ProgressType.ScaleRing })
  25. .width(100)
  26. Progress({ value: 50, total: 150, type: ProgressType.ScaleRing })
  27. .color(Color.Red)
  28. .value(100)
  29. .width(100)
  30. .style({ strokeWidth: 15, scaleCount: 15, scaleWidth: 5 })
  31. }
  32. //环形有刻度进度条 定义样式
  33. Row({ space: 40 }) {
  34. Progress({ value: 20, type: ProgressType.ScaleRing })
  35. .value(50)
  36. .width(100)
  37. .style({ strokeWidth: 20, scaleCount: 20, scaleWidth: 5 })
  38. Progress({ value: 100, total: 150, type: ProgressType.ScaleRing })
  39. .color(Color.Red)
  40. .value(100)
  41. .width(100)
  42. .style({ strokeWidth: 20, scaleCount: 30, scaleWidth: 3 })
  43. }
  44. //环形进度条
  45. Row({ space: 50 }) {
  46. Progress({ value: 50, type: ProgressType.Ring })
  47. .width(100)
  48. Progress({ value: 100, total: 150, type: ProgressType.Ring })
  49. .color(Color.Red)
  50. .value(100)
  51. .width(100)
  52. .style({ strokeWidth: 20, scaleCount: 30, scaleWidth: 20 })
  53. }
  54. //胶囊进度条
  55. Row({ space: 50 }) {
  56. Progress({ value: 50, type: ProgressType.Capsule })
  57. .width(200)
  58. .height(50)
  59. Progress({ value: 100, total: 150, type: ProgressType.Capsule })
  60. .color(Color.Red)
  61. .value(100)
  62. .width(100)
  63. .height(50)
  64. }
  65. }.width('100%').margin({ top: 30 })
  66. }
  67. }

十二、QRCode

描述: 二维码组件

功能: 用来显示二维码

子组件:无

QRCode(value: string)

参数:

  • value:二维码内容

属性:

  • color:二维码颜色
  • backgroundColor:二维码背景色

使用案例:

  1. @Entry
  2. @Component
  3. struct QRCodeExample {
  4. private value: string = 'hello world'
  5. build() {
  6. Column({ space: 5 }) {
  7. QRCode(this.value)
  8. .width(200)
  9. .height(200)
  10. // 设置二维码颜色
  11. QRCode(this.value)
  12. .color(Color.Red)
  13. .width(200)
  14. .height(200)
  15. // 设置二维码背景色
  16. QRCode(this.value)
  17. .width(200)
  18. .height(200)
  19. .backgroundColor(Color.Red)
  20. }.width('100%').margin({ top: 5 })
  21. }
  22. }

十二、 Radio

描述: 单选框组件

功能: 提供相应的用户交互选择项

子组件:无

Radio(options: {value: string, group: string})

参数:

  • value:值
  • group:组名,一个组只能有一个单选框被选中

属性:

  • checked:设置是否选中

事件:

  • onChange(callback: (isChecked: boolean) => void):单选框状态改变时触发

使用案例:

  1. @Entry
  2. @Component
  3. struct RadioPage {
  4. @State message: string = 'Hello World'
  5. build() {
  6. Row() {
  7. Column() {
  8. Radio({ value: 'Radio1', group: 'radioGroup' })
  9. .checked(true)
  10. .height(50)
  11. .width(50)
  12. .onChange((isChecked: boolean) => {
  13. })
  14. Radio({ value: 'Radio2', group: 'radioGroup' })
  15. .checked(true)
  16. .height(50)
  17. .width(50)
  18. .onChange((isChecked: boolean) => {
  19. })
  20. }
  21. .width('100%')
  22. }
  23. .height('100%')
  24. }
  25. }

十三、 Rating

描述: 评分组件

功能: 用来评分

子组件:无

Rating(options?: { rating: number, indicator?: boolean })

参数:

  • rating:设置并接收评分值
  • indicator:指示器

属性:

  • stars:设置评星总数,默认值:5
  • stepSize:步长,一次可增加减少多少,默认值:0.5
  • starStyle:选中与未选中样式

事件:

  • onChange(callback:(value: number) => void):操作发生改变时触发

可由用户自定义或使用系统默认图片,仅支持本地。

  • backgroundSrc:未选中的星级的图片链接 
  • foregroundSrc:选中的星级的图片路径
  • secondarySrc:部分选中的星级的图片路径

使用案例:

  1. @Entry
  2. @Component
  3. struct RatingPage {
  4. @State rating: number = 1
  5. @State indicator: boolean = false
  6. build() {
  7. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) {
  8. Text('当前评分: ' + this.rating).fontSize(20)
  9. //基础用法
  10. Rating({ rating: this.rating, indicator: this.indicator })
  11. .stars(5)
  12. .stepSize(1)
  13. .onChange((value: number) => {
  14. this.rating = value
  15. })
  16. //可设置本地图片
  17. Rating({ rating: this.rating, indicator: false })
  18. .stars(5)
  19. .stepSize(1)
  20. .starStyle({
  21. backgroundUri: '/common/bg1.png',
  22. foregroundUri: '/common/bg2.png',
  23. secondaryUri: '/common/bg3.png'
  24. })
  25. .margin({ top: 24 })
  26. .onChange((value: number) => {
  27. this.rating = value
  28. })
  29. }.width(350).height(200).padding(35)
  30. }
  31. }

十四、 RichText

描述: 富文本组件

功能: 解析并显示HTML格式文本。

子组件:无

RichText(content: string)

参数:

  • content :HTML格式的字符串

事件:

  • onStart(callback: () => void):加载网页开始时触发
  • onComplete(callback: () => void) :加载网页完成时触发

支持标签:

  • <h1>--<h6>:定义标题,1~6

  • <p></p>:定义段落

  • <br/>:插入一个简单的换行符

  • <hr/>:定义HTML页面中的主题变化(比如话题的转移),并显示为一条水平线

  • <div></div>:常用于组合块级元素,以便通过CSS来对这些元素进行格式化

  • <i></i>:斜体

  • <u></u>:下划线

  • <style></style>:HTML文档的样式信息

  • <script></script>:用于定义客户端文本,比如JavaScript

鸿蒙系列--组件介绍之其他基础组件(上)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/273655?site
推荐阅读
相关标签
  

闽ICP备14008679号