HarmonyOS应用开发:GridRow(容器组件)

栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题,保证不同设备上各个模块的布局一致性。

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

说明:

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

子组件

可以包含GridCol子组件。

接口

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

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

参数:

参数名类型必填说明
gutterLength | GutterOption栅格布局间距。
columnsnumber | GridRowColumnOption设置布局列数。
breakpointsBreakPoints设置断点值的断点数列以及基于窗口或容器尺寸的相应参照。
directionGridRowDirection栅格布局排列方向。

GutterOption

栅格布局间距类型,用于描述栅格子组件不同方向的间距。

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

参数名参数类型必填参数描述
xLength | GridRowSizeOption栅格子组件水平方向间距。
yLength | GridRowSizeOption栅格子组件竖直方向间距。

GridRowColumnOption

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

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

参数名参数类型必填参数描述
xsnumber在最小宽度类型设备上,栅格容器组件的栅格列数。
smnumber在小宽度类型设备上,栅格容器组件的栅格列数。
mdnumber在中等宽度类型设备上,栅格容器组件的栅格列数。
lgnumber在大宽度类型设备上,栅格容器组件的栅格列数。
xlnumber在特大宽度类型设备上,栅格容器组件的栅格列数。
xxlnumber在超大宽度类型设备上,栅格容器组件的栅格列数。

GridRowSizeOption

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

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

参数名参数类型必填参数描述
xsLength在最小宽度类型设备上,栅格子组件的间距。
smLength在小宽度类型设备上,栅格子组件的间距。
mdLength在中等宽度类型设备上,栅格子组件的间距。
lgLength在大宽度类型设备上,栅格子组件的间距。
xlLength在特大宽度类型设备上,栅格子组件的间距。
xxlLength在超大宽度类型设备上,栅格子组件的间距。

BreakPoints

设置栅格容器组件的断点。

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

参数名参数类型必填参数描述
valueArray<string>设置断点位置的单调递增数组。
默认值:["320vp", "600vp", "840vp"]
referenceBreakpointsReference断点切换参照物。
默认值:BreakpointsReference.WindowSize
  // 启用xs、sm、md共3个断点
  breakpoints: {value: ["100vp", "200vp"]}
  // 启用xs、sm、md、lg共4个断点,断点范围值必须单调递增
  breakpoints: {value: ["320vp", "600vp", "840vp"]}
  // 启用xs、sm、md、lg、xl共5个断点,断点范围数量不可超过断点可取值数量-1
  breakpoints: {value: ["320vp", "600vp", "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})
123456789101112
$\circ$$\circ$$\circ$$\circ$$\circ$$\circ$------
-----
$\circ$$\circ$$\circ$$\circ$$\circ$$\circ$$\circ$$\circ$

属性

除支持通用属性外,还支持以下属性:

名称参数类型描述
alignItems10+ItemAlign设置GridRow中的GridCol垂直主轴方向对齐方式,默认值:ItemAlign.Start
说明
ItemAlign支持的枚举:ItemAlign.Start、ItemAlign.Center、ItemAlign.End、ItemAlign.Stretch。
GridCol本身也可通过alignSelf(ItemAlign)设置自身对齐方式。当上述两种对齐方式都设置时,以GridCol自身设置为准。
从API version 10开始,该接口支持在ArkTS卡片中使用。

事件

onBreakpointChange

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

断点发生变化时触发回调。

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

参数:

参数名参数类型必填说明
breakpointsstring取值为"xs""sm""md""lg""xl""xxl"

示例

// xxx.ets
@Entry
@Component
struct GridRowExample {
  @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown]
  @State currentBp: string = 'unknown'

  build() {
    Column() {
      GridRow({
        columns: 5,
        gutter: { x: 5, y: 10 },
        breakpoints: { value: ["400vp", "600vp", "800vp"],
          reference: BreakpointsReference.WindowSize },
        direction: GridRowDirection.Row
      }) {
        ForEach(this.bgColors, (color: Color) => {
          GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 }, offset: 0, order: 0 }) {
            Row().width("100%").height("20vp")
          }.borderColor(color).borderWidth(2)
        })
      }.width("100%").height("100%")
      .onBreakpointChange((breakpoint) => {
        this.currentBp = breakpoint
      })
    }.width('80%').margin({ left: 10, top: 5, bottom: 5 }).height(200)
    .border({ color: '#880606', width: 2 })
  }
}

figures/gridrow.png

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing ,不定期分享原创知识。
  • 更多鸿蒙最新技术知识点,请关注作者 

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值