• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# GridRow
2
3栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题,保证不同设备上各个模块的布局一致性。
4
5栅格容器组件,仅可以和栅格子组件([GridCol](ts-container-gridcol.md))在栅格布局场景中使用。
6
7>  **说明:**
8>
9> 该组件从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
10
11
12## 子组件
13
14可以包含GridCol子组件。
15
16
17## 接口
18GridRow(option?: GridRowOptions)
19
20栅格行布局容器。
21
22**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
23
24**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
25
26**系统能力:** SystemCapability.ArkUI.ArkUI.Full
27
28**参数:**
29| 参数名 |类型|必填|说明|
30|-----|-----|----|----|
31| option | [GridRowOptions](#gridrowoptions对象说明) | 否  | 栅格布局子组件参数。 |
32
33## GridRowOptions对象说明
34
35设置栅格行布局容器的布局选项。
36
37**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
38
39**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
40
41**系统能力:** SystemCapability.ArkUI.ArkUI.Full
42
43| 名称 |类型|必填|说明|
44|-----|-----|----|----|
45|columns| number \| [GridRowColumnOption](#gridrowcolumnoption) |  否  |设置布局列数。<br />取值为大于0的整数,默认值:12 |
46|gutter|[Length](ts-types.md#length) \| [GutterOption](#gutteroption)|   否  |栅格布局间距。<br />默认值:0 |
47|breakpoints|[BreakPoints](#breakpoints)|  否  |设置断点值的断点数列以及基于窗口或容器尺寸的相应参照。<br />默认值:<br />{<br />value: ["320vp", "600vp", "840vp"],<br />reference: BreakpointsReference.WindowSize<br />} |
48|direction|[GridRowDirection](#gridrowdirection枚举说明)|   否  |栅格布局排列方向。<br />默认值:GridRowDirection.Row |
49
50## GutterOption
51
52栅格布局间距类型,用于描述栅格子组件不同方向的间距。
53
54**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
55
56**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
57
58**系统能力:** SystemCapability.ArkUI.ArkUI.Full
59
60| 名称   | 类型   | 必填   | 说明                                     |
61| ----- | ------ | ---- | ---------------------------------------- |
62| x  | [Length](ts-types.md#length) \| [GridRowSizeOption](#gridrowsizeoption) | 否   | 栅格子组件水平方向间距。    |
63| y  | [Length](ts-types.md#length) \| [GridRowSizeOption](#gridrowsizeoption) | 否   | 栅格子组件竖直方向间距。    |
64
65## GridRowColumnOption
66
67栅格在不同宽度设备类型下,栅格列数。
68
69**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
70
71**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
72
73**系统能力:** SystemCapability.ArkUI.ArkUI.Full
74
75| 名称   | 类型   | 必填   | 说明                                     |
76| ----- | ------ | ---- | ---------------------------------------- |
77| xs  | number | 否    | 在栅格大小为xs的设备上,栅格容器组件的栅格列数。    |
78| sm  | number | 否    | 在栅格大小为sm的设备上,栅格容器组件的栅格列数。      |
79| md  | number | 否    | 在栅格大小为md的设备上,栅格容器组件的栅格列数。    |
80| lg  | number | 否    | 在栅格大小为lg的设备上,栅格容器组件的栅格列数。      |
81| xl  | number | 否    | 在栅格大小为xl的设备上,栅格容器组件的栅格列数。    |
82| xxl | number | 否    | 在栅格大小为xxl的设备上,栅格容器组件的栅格列数。    |
83
84**说明:**
85
86在GridRow栅格组件中,允许开发者使用breakpoints自定义修改[断点](../../../ui/arkts-layout-development-grid-layout.md#栅格容器断点)的取值范围,最多支持xs、sm、md、lg、xl、xxl六个断点,且名称不可修改。假设传入的数组是[n0, n1, n2, n3, n4],各个断点取值如下:
87|断点|取值范围|
88|---|-----------|
89|xs |[0, n0)    |
90|sm |[n0, n1)   |
91|md |[n1, n2)   |
92|lg |[n2, n3)   |
93|xl |[n3, n4)   |
94|xxl|[n4, INF)  |
95
96## GridRowSizeOption
97
98栅格在不同宽度设备类型下,gutter的大小。
99
100**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
101
102**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
103
104**系统能力:** SystemCapability.ArkUI.ArkUI.Full
105
106| 名称   | 类型   | 必填   | 说明                                     |
107| ----- | ------ | ---- | ---------------------------------------- |
108| xs  | [Length](ts-types.md#length) | 否    | 在最小宽度类型设备上,栅格子组件的间距。    |
109| sm  | [Length](ts-types.md#length) | 否    | 在小宽度类型设备上,栅格子组件的间距。      |
110| md  | [Length](ts-types.md#length) | 否    | 在中等宽度类型设备上,栅格子组件的间距。    |
111| lg  | [Length](ts-types.md#length) | 否    | 在大宽度类型设备上,栅格子组件的间距。      |
112| xl  | [Length](ts-types.md#length) | 否    | 在特大宽度类型设备上,栅格子组件的间距。    |
113| xxl | [Length](ts-types.md#length) | 否    | 在超大宽度类型设备上,栅格子组件的间距。    |
114
115## BreakPoints
116
117设置栅格容器组件的断点。
118
119**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
120
121**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
122
123**系统能力:** SystemCapability.ArkUI.ArkUI.Full
124
125| 名称   | 类型   | 必填   | 说明                                     |
126| ----- | ------ | ---- | ---------------------------------------- |
127| value  | Array&lt;string&gt; | 否  | 设置断点位置的单调递增数组。<br>默认值:["320vp", "600vp", "840vp"]    |
128| reference  | [BreakpointsReference](#breakpointsreference枚举说明) | 否    | 断点切换参照物。<br>默认值:BreakpointsReference.WindowSize |
129```ts
130  // 启用xs、sm、md共3个断点
131  breakpoints: {value: ["100vp", "200vp"]}
132  // 启用xs、sm、md、lg共4个断点,断点范围值必须单调递增
133  breakpoints: {value: ["320vp", "600vp", "840vp"]}
134  // 启用xs、sm、md、lg、xl共5个断点,断点范围数量不可超过断点可取值数量-1
135  breakpoints: {value: ["320vp", "600vp", "840vp", "1080vp"]}
136```
137
138## BreakpointsReference枚举说明
139
140设置栅格容器组件的断点参照物。
141
142**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
143
144**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
145
146**系统能力:** SystemCapability.ArkUI.ArkUI.Full
147
148| 名称 | 说明 |
149| -------- | -------- |
150| WindowSize | 以窗口为参照。 |
151| ComponentSize | 以容器为参照。 |
152
153## GridRowDirection枚举说明
154
155栅格元素排列方向。
156
157**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
158
159**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
160
161**系统能力:** SystemCapability.ArkUI.ArkUI.Full
162
163| 名称 | 说明 |
164| -------- | -------- |
165| Row | 栅格元素按照行方向排列。 |
166| RowReverse | 栅格元素按照逆序行方向排列。 |
167
168**说明:**
169* 栅格元素仅支持Row/RowReverse排列,不支持column/ColumnReverse方向排列。
170* 栅格子组件仅能通过span、offset计算子组件位置与大小。多个子组件span超过规定列数时自动换行。
171* 单个元素span大小超过最大列数时后台默认span为最大column数。
172* 新一行的Offset加上子组件的span超过总列数时,将下一个子组件在新的一行放置。
173* 例:Item1: GridCol({ span: 6}), Item2: GridCol({ span: 8, offset:11})
174
175|1      | 2     | 3     | 4     | 5     | 6     | 7     | 8     | 9     | 10    | 11    | 12    |
176| ----- | ------ | ---- | ---- | -----|-----|---------|--------|------|------- |------- |------- |
177| $\circ$ | $\circ$ | $\circ$ | $\circ$ | $\circ$|$\circ$| - |  - |  - |  -  | -  | -  |
178| -     | -     | -     | -     | -     |       |       |       |       |       |   |   |
179| $\circ$ | $\circ$ | $\circ$ | $\circ$ | $\circ$|$\circ$|$\circ$|$\circ$|  |   |   |   |
180
181## 属性
182
183除支持[通用属性](ts-component-general-attributes.md)外,还支持以下属性:
184
185### alignItems<sup>10+</sup>
186
187alignItems(value: ItemAlign)
188
189设置GridRow中的GridCol垂直主轴方向对齐方式。GridCol本身也可通过alignSelf([ItemAlign](ts-appendix-enums.md#itemalign))设置自身对齐方式。当上述两种对齐方式都设置时,以GridCol自身设置为准。
190
191**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。
192
193**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
194
195**系统能力:** SystemCapability.ArkUI.ArkUI.Full
196
197**参数:**
198
199| 参数名 | 类型                                        | 必填 | 说明                                                         |
200| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ |
201| value  | [ItemAlign](ts-appendix-enums.md#itemalign) | 是   | GridRow中的GridCol垂直主轴方向对齐方式。<br/>默认值:ItemAlign.Start<br/>**说明**:<br/>ItemAlign支持的枚举:ItemAlign.StartItemAlign.CenterItemAlign.EndItemAlign.Stretch。 |
202
203
204## 事件
205
206### onBreakpointChange
207
208onBreakpointChange(callback: (breakpoints: string) => void)
209
210断点发生变化时触发回调。
211
212**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
213
214**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
215
216**系统能力:** SystemCapability.ArkUI.ArkUI.Full
217
218**参数:**
219
220| 参数名   | 类型   | 必填   | 说明   |
221| ----- | ------ | ---- | ---------------------------------------- |
222|breakpoints| string |否|取值为`"xs"`、`"sm"`、`"md"`、`"lg"`、`"xl"`、`"xxl"`。|
223
224## 示例
225
226栅格布局的基本用法。
227
228```ts
229// xxx.ets
230@Entry
231@Component
232struct GridRowExample {
233  @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown]
234  @State currentBp: string = 'unknown'
235
236  build() {
237    Column() {
238      GridRow({
239        columns: 5,
240        gutter: { x: 5, y: 10 },
241        breakpoints: { value: ["400vp", "600vp", "800vp"],
242          reference: BreakpointsReference.WindowSize },
243        direction: GridRowDirection.Row
244      }) {
245        ForEach(this.bgColors, (color: Color) => {
246          GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 }, offset: 0, order: 0 }) {
247            Row().width("100%").height("20vp")
248          }.borderColor(color).borderWidth(2)
249        })
250      }.width("100%").height("100%")
251      .onBreakpointChange((breakpoint) => {
252        this.currentBp = breakpoint
253      })
254    }.width('80%').margin({ left: 10, top: 5, bottom: 5 }).height(200)
255    .border({ color: '#880606', width: 2 })
256  }
257}
258```
259
260![figures/gridrow.png](figures/gridrow.png)
261