• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# GridCol
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @zju_ljz-->
5<!--Designer: @lanshouren-->
6<!--Tester: @liuli0427-->
7<!--Adviser: @HelloCrease-->
8
9栅格子组件,必须作为栅格容器组件([GridRow](ts-container-gridrow.md))的子组件使用。
10
11>  **说明:**
12>
13> 该组件从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14
15## 子组件
16
17可以包含单个子组件。
18## 接口
19
20GridCol(option?: GridColOptions)
21
22栅格列布局组件。
23
24**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
25
26**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
27
28**系统能力:** SystemCapability.ArkUI.ArkUI.Full
29
30**参数:**
31| 参数名 | 类型                                                  | 必填 | 说明                                                         |
32| ------ | ----------------------------------------------------- | ---- | ------------------------------------------------------------ |
33| option   | [GridColOptions](#gridcoloptions对象说明) | 否   | 栅格布局子组件参数。 |
34
35## GridColOptions对象说明
36
37设置栅格列布局组件布局选项。
38
39**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
40
41**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
42
43**系统能力:** SystemCapability.ArkUI.ArkUI.Full
44
45| 名称 | 类型 | 只读 | 可选 | 说明 |
46| -------- | -------- | -------- | -------- | -------- |
47| span   | number \| [GridColColumnOption](#gridcolcolumnoption) | 否 | 是   | 栅格子组件占用栅格容器组件的列数。span为0表示该元素不参与布局计算,即不会被渲染。<br/>取值为非负整数,默认值为1 <br />非法值:按默认值处理。|
48| offset | number \| [GridColColumnOption](#gridcolcolumnoption) | 否 | 是   | 栅格子组件相对于原本位置偏移的列数。<br/>取值为非负整数,默认值为0 <br />非法值:按默认值处理。|
49| order  | number \| [GridColColumnOption](#gridcolcolumnoption) | 否 | 是   | 元素的序号,根据栅格子组件的序号,从小到大对栅格子组件做排序。<br/>取值为非负整数,默认值为0。<br />非法值:按默认值处理。<br/>**说明:**<br/>当子组件不设置order或者设置相同的order,子组件按照代码顺序展示。<br/>当子组件部分设置order,部分不设置order时,未设置order的子组件依次排序靠前,设置了order的子组件按照数值从小到大排列。|
50
51`span`、`offset`、`order`属性按照`xs`、`sm`、`md`、`lg`、`xl`、`xxl`的顺序具有“继承性”,未设置值的断点将会从前一个断点取值。
52API version 20之后,`span`的继承规则见[gridcolcolumnoption](#gridcolcolumnoption)。
53
54## 属性
55除支持[通用属性](ts-component-general-attributes.md)外,还支持以下属性:
56
57### span
58
59span(value: number | GridColColumnOption)
60
61设置占用列数。span为0,意味着该元素不参与布局计算,即不会被渲染。
62
63**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
64
65**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
66
67**系统能力:** SystemCapability.ArkUI.ArkUI.Full
68
69**参数:**
70
71| 参数名 | 类型                                                         | 必填 | 说明                     |
72| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
73| value  | number&nbsp;\|&nbsp;[GridColColumnOption](#gridcolcolumnoption) | 是   | 占用列数。<br/>取值为非负整数,默认值为1。<br />非法值:按默认值处理。 |
74
75### gridColOffset
76
77gridColOffset(value: number | GridColColumnOption)
78
79设置相对于前一个栅格子组件偏移的列数。
80
81**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
82
83**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
84
85**系统能力:** SystemCapability.ArkUI.ArkUI.Full
86
87**参数:**
88
89| 参数名 | 类型                                                         | 必填 | 说明                                             |
90| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------ |
91| value  | number&nbsp;\|&nbsp;[GridColColumnOption](#gridcolcolumnoption) | 是   | 相对于前一个栅格子组件偏移的列数。<br/>取值为非负整数,默认值:0  <br />非法值:按默认值处理。|
92
93### order
94
95order(value: number | GridColColumnOption)
96
97设置栅格子组件的序号,根据序号从小到大对栅格子组件进行排序。
98
99**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
100
101**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
102
103**系统能力:** SystemCapability.ArkUI.ArkUI.Full
104
105**参数:**
106
107| 参数名 | 类型                                                         | 必填 | 说明                                                         |
108| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
109| value  | number&nbsp;\|&nbsp;[GridColColumnOption](#gridcolcolumnoption) | 是   | 元素的序号,根据栅格子组件的序号,从小到大对栅格子组件做排序。<br/>取值为非负整数,默认值:0  <br />非法值:按默认值处理。|
110
111## GridColColumnOption
112
113用于自定义指定在不同宽度设备类型上,栅格子组件占据的栅格数量单位。
114
115**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
116
117**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
118
119**系统能力:** SystemCapability.ArkUI.ArkUI.Full
120
121| 名称 | 类型 | 只读 | 可选 | 说明 |
122| -------- | -------- | -------- | -------- | -------- |
123| xs  | number | 否 | 是  | 在栅格大小为xs的设备上,栅格容器组件的栅格列数。    |
124| sm  | number | 否 | 是  | 在栅格大小为sm的设备上,栅格容器组件的栅格列数。      |
125| md  | number | 否 | 是  | 在栅格大小为md的设备上,栅格容器组件的栅格列数。    |
126| lg  | number | 否 | 是  | 在栅格大小为lg的设备上,栅格容器组件的栅格列数。      |
127| xl  | number | 否 | 是  | 在栅格大小为xl的设备上,栅格容器组件的栅格列数。    |
128| xxl | number | 否 | 是  | 在栅格大小为xxl的设备上,栅格容器组件的栅格列数。    |
129
130**说明:**
131- API version 20之前,仅配置部分断点下GridCol组件所占列数,取已配置的更小断点的列数补全未配置的列数。若未配置更小断点的列数,取默认值1。
132  <!--code_no_check-->
133  ```ts
134  span: {xs:2, md:4, lg:8} // 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}
135  span: {md:4, lg:8} // 等于配置 span: {xs:1, sm:1, md:4, lg:8, xl:8, xxl:8}
136  ```
137- API version 20及以后,仅配置部分断点下GridCol组件所占列数,取已配置的更小断点的列数补全未配置的列数。若未配置更小断点的列数,取已配置的更大断点的列数补全未配置的列数。
138  <!--code_no_check-->
139  ```ts
140  span: {xs:2, md:4, lg:8} // 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}
141  span: {md:4, lg:8} // 等于配置 span: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}
142  ```
143- 建议手动配置不同断点下GridCol组件所占列数,避免默认补全列数的布局效果不符合预期。
144
145## 事件
146支持[通用事件](ts-component-general-events.md)。
147
148## 示例
149GridCol的基本用法示例。
150
151```ts
152// xxx.ets
153@Entry
154@Component
155struct GridColExample {
156  @State bgColors: Color[] =
157    [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown]
158  @State currentBp: string = 'unknown'
159
160  build() {
161    Column() {
162      GridRow({
163        columns: 5,
164        gutter: { x: 5, y: 10 },
165        breakpoints: {
166          value: ["400vp", "600vp", "800vp"],
167          reference: BreakpointsReference.WindowSize
168        },
169        direction: GridRowDirection.Row
170      }) {
171        ForEach(this.bgColors, (color: Color) => {
172          GridCol({
173            span: { xs: 1, sm: 2, md: 3, lg: 4 },
174            offset: 0,
175            order: 0
176          }) {
177            Row().width("100%").height("20vp")
178          }.borderColor(color).borderWidth(2)
179        })
180      }.width("100%").height("100%")
181      .onBreakpointChange((breakpoint) => {
182        this.currentBp = breakpoint
183      })
184    }.width('80%').margin({ left: 10, top: 5, bottom: 5 }).height(200)
185    .border({ color: '#880606', width: 2 })
186  }
187}
188```
189
190![figures/gridrow.png](figures/gridrow.png)