文档管理中心

GridCol

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

栅格布局系统中的列组件,必须作为栅格容器组件(GridRow)的子组件使用。适用于响应式布局、多设备适配等需要动态调整列宽的场景。支持响应式断点配置、跨列布局、偏移和排序功能。使用GridCol组件可以快速实现响应式布局,简化多设备适配的开发工作。

说明

该组件从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

子组件

可以包含单个子组件。

接口

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

GridCol(option?: GridColOptions)

栅格列布局组件。创建成功后,可根据配置的span、offset、order属性进行栅格布局,作为GridRow的子组件参与栅格系统的布局计算。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
option GridColOptions 否 栅格布局子组件配置选项,可配置span(占用列数)、offset(偏移列数)、order(排序序号)。当需要自定义栅格布局行为(如响应式列宽、固定偏移位置、指定渲染顺序)时传入此参数;当使用默认栅格布局时可不传入。不传入时使用默认配置。

GridColOptions对象说明

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

设置栅格列布局组件布局选项。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 只读 可选 说明
span number | GridColColumnOption 否 是

栅格子组件占用栅格容器组件的列数。span为0表示该元素不参与布局计算,即不会被渲染。

取值为非负整数,默认值为1。

非法值:按默认值处理。

offset number | GridColColumnOption 否 是

栅格子组件相对于原本位置偏移的列数。offset为0表示不偏移。

取值为非负整数,默认值为0。

非法值:按默认值处理。

order number | GridColColumnOption 否 是

元素的序号,根据栅格子组件的序号,从小到大对栅格子组件做排序。

取值为非负整数,默认值为0。

非法值:按默认值处理。

说明:

当子组件不设置order或者设置相同的order,子组件按照代码顺序展示。

当子组件部分设置order,部分不设置order时,未设置order的子组件依次排序靠前,设置了order的子组件按照数值从小到大排列。

span、offset、order属性按照xs、sm、md、lg、xl、xxl的顺序具有“继承性”,未设置值的断点将会从前一个断点取值。

API version 20之后,span的继承规则见GridColColumnOption,offset和order的继承规则保持不变。

属性

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

span

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

span(value: number | GridColColumnOption)

设置栅格子组件占用列数。调用成功后,栅格子组件将按照设置的列数占据相应宽度的栅格区域。span为0表示该元素不参与布局计算,即不会被渲染。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number | GridColColumnOption 是

占用列数。span为0表示该元素不参与布局计算,即不会被渲染。

取值为非负整数,默认值为1。

非法值:按默认值处理。

说明: 该属性具有断点继承性,详见GridColOptions对象说明。API version 20之后,默认值继承规则有变化,详见GridColColumnOption。

gridColOffset

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

gridColOffset(value: number | GridColColumnOption)

设置栅格子组件相对于原本位置偏移的列数。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number | GridColColumnOption 是

相对于原本位置偏移的列数。gridColOffset为0表示不偏移。

取值为非负整数,默认值为0。

非法值:按默认值处理。

说明: 该属性具有断点继承性,详见GridColOptions对象说明。

order

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

order(value: number | GridColColumnOption)

设置栅格子组件的序号,根据序号从小到大对栅格子组件进行排序。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value number | GridColColumnOption 是

元素序号,根据栅格子组件的序号从小到大排序。

取值为非负整数,默认值为0。

非法值:按默认值处理。

说明: 该属性具有断点继承性,详见GridColOptions对象说明。

GridColColumnOption

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

用于自定义指定在不同宽度设备类型上,栅格子组件占据的栅格数量单位。

  • API version 20之前,仅配置部分断点下GridCol组件所占列数,取已配置的更小断点的列数补全未配置的列数。若未配置更小断点的列数,取默认值1。
    span: {xs:2, md:4, lg:8} // 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}
    span: {md:4, lg:8} // 等于配置 span: {xs:1, sm:1, md:4, lg:8, xl:8, xxl:8}
  • API version 20及以后,仅配置部分断点下GridCol组件所占列数,取已配置的更小断点的列数补全未配置的列数。若未配置更小断点的列数,取已配置的更大断点的列数补全未配置的列数。
    span: {xs:2, md:4, lg:8} // 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}
    span: {md:4, lg:8} // 等于配置 span: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}
  • 建议手动配置不同断点下GridCol组件所占列数,避免默认补全列数的布局效果不符合预期。

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

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 只读 可选 说明
xs number 否 是 在最小宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。
sm number 否 是 在小宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。
md number 否 是 在中等宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。
lg number 否 是 在大宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。
xl number 否 是 在特大宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。
xxl number 否 是 在超大宽度类型设备上,栅格子组件占据的栅格列数。取值为非负整数。默认值为1。非法值:按默认值处理。

事件

支持通用事件。

示例

GridCol的基本用法示例。

// xxx.ets
@Entry
@Component
struct GridColExample {
  @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) => {
          // 配置不同断点下的span值,实现响应式布局
          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 })
  }
}