codecamp

栅格容器组件

栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。

说明

该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

可以包含GridCol子组件。

接口

GridRow(option?: {columns?: number | GridRowColumnOption, gutter?: Length | GutterOption, breakpoints?: BreakPoints, direction?: GridRowDirection})

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

说明

gutter

Length | GutterOption

否

栅格布局间距,x代表水平方向。

columns

number | GridRowColumnOption

否

设置布局列数。

breakpoints

BreakPoints

否

设置断点值的断点数列以及基于窗口或容器尺寸的相应参照。

direction

GridRowDirection

否

栅格布局排列方向。

GutterOption

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数名

参数类型

必填

参数描述

x

Length | GridRowSizeOption

否

水平gutter option。

y

Length | GridRowSizeOption

否

竖直gutter option。

GridRowColumnOption

栅格在不同宽度设备类型下,栅格列数。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数名

参数类型

必填

参数描述

xs

number

否

最小宽度类型设备。

sm

number

否

小宽度类型设备。

md

number

否

中等宽度类型设备。

lg

number

否

大宽度类型设备。

xl

number

否

特大宽度类型设备。

xxl

number

否

超大宽度类型设备。

GridRowSizeOption

栅格在不同宽度设备类型下,gutter的大小。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数名

参数类型

必填

参数描述

xs

Length

否

最小宽度类型设备。

sm

Length

否

小宽度类型设备。

md

Length

否

中等宽度类型设备。

lg

Length

否

大宽度类型设备。

xl

Length

否

特大宽度类型设备。

xxl

Length

否

超大宽度类型设备。

BreakPoints

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数名

参数类型

必填

参数描述

value

Array<string>

否

设置断点位置的单调递增数组。

默认值:["320vp", "520vp", "840vp"]

reference

BreakpointsReference

否

断点切换参照物。

  1. // 启用xs、sm、md共3个断点
  2. breakpoints: {value: ["100vp", "200vp"]}
  3. // 启用xs、sm、md、lg共4个断点,断点范围值必须单调递增
  4. breakpoints: {value: ["320vp", "520vp", "840vp"]}
  5. // 启用xs、sm、md、lg、xl共5个断点,断点范围数量不可超过断点可取值数量-1
  6. breakpoints: {value: ["320vp", "520vp", "840vp", "1080vp"]}

BreakpointsReference枚举类型

从API version 9开始,该接口支持在ArkTS卡片中使用。

枚举名

描述

WindowSize

以窗口为参照。

ComponentSize

以容器为参照。

GridRowDirection枚举类型

从API version 9开始,该接口支持在ArkTS卡片中使用。

枚举名

描述

Row

栅格元素按照行方向排列。

RowReverse

栅格元素按照逆序行方向排列。

栅格最多支持xs、sm、md、lg、xl、xxl六个断点,且名称不可修改。假设传入的数组是[n0, n1, n2, n3, n4],各个断点取值如下:

断点

取值范围

xs

[0, n0)

sm

[n0, n1)

md

[n1, n2)

lg

[n2, n3)

xl

[n3, n4)

xxl

[n4, INF)

说明:

  • 栅格元素仅支持Row/RowReverse排列,不支持column/ColumnReverse方向排列。
  • 栅格子组件仅能通过span、offset计算子组件位置与大小。多个子组件span超过规定列数时自动换行。
  • 单个元素span大小超过最大列数时后台默认span为最大column数。
  • 新一行的Offset加上子组件的span超过总列数时,将下一个子组件在新的一行放置。
  • 例:Item1: GridCol({ span: 6}), Item2: GridCol({ span: 8, offset:11})

1

2

3

4

5

6

7

8

9

10

11

12

∘

∘

∘

∘

∘

∘

-

-

-

-

-

-

-

-

-

-

-

       

∘

∘

∘

∘

∘

∘

∘

∘

    

属性

支持通用属性。

事件

onBreakpointChange

onBreakpointChange(callback: (breakpoints: string) => void)

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

参数类型

必填

说明

breakpoints

string

是

断点发生变化时触发回调

取值为"xs"、"sm"、"md"、"lg"、"xl"、"xxl"。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct GridRowExample {
  5. @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown]
  6. @State currentBp: string = 'unknown'
  7. build() {
  8. Column() {
  9. GridRow({
  10. columns: 5,
  11. gutter: { x: 5, y: 10 },
  12. breakpoints: { value: ["400vp", "600vp", "800vp"],
  13. reference: BreakpointsReference.WindowSize },
  14. direction: GridRowDirection.Row
  15. }) {
  16. ForEach(this.bgColors, (color) => {
  17. GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 } }) {
  18. Row().width("100%").height("20vp")
  19. }.borderColor(color).borderWidth(2)
  20. })
  21. }.width("100%").height("100%")
  22. .onBreakpointChange((breakpoint) => {
  23. this.currentBp = breakpoint
  24. })
  25. }.width('80%').margin({ left: 10, top: 5, bottom: 5 }).height(200)
  26. .border({ color: '#880606', width: 2 })
  27. }
  28. }

栅格子组件
网格容器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

媒体组件

像素

枚举

类型

接口

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }