You need to sign in or sign up before continuing.
ts-container-gridrow.md 6.7 KB
Newer Older
X
xiexiyun 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# GridRow

栅格容器组件,仅可以和栅格子组件([GridCol](ts-container-gridcol.md))在栅格布局场景中使用。

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


## 子组件

可以包含GridCol子组件。


## 接口
K
kangchongtao 已提交
16
GridRow(option?: {columns?: number | GridRowColumnOption, gutter?: Length | GutterOption, breakpoints?: BreakPoints, direction?: GridRowDirection})
X
xiexiyun 已提交
17

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

X
xiexiyun 已提交
20
**参数:**
21

X
xiexiyun 已提交
22 23
| 参数名 |类型|必填|说明|
|-----|-----|----|----|
K
kangchongtao 已提交
24
|gutter|Length \| GutterOption|   否  |栅格布局间距,x代表水平方向。|
X
xiexiyun 已提交
25
|columns| number \| GridRowColumnOption |  否  |设置布局列数。|
G
gmy 已提交
26
|breakpoints|BreakPoints|  否  |设置断点值的断点数列以及基于窗口或容器尺寸的相应参照。|
X
xiexiyun 已提交
27 28
|direction|GridRowDirection|   否  |栅格布局排列方向。|

K
kangchongtao 已提交
29
## GutterOption
X
xiexiyun 已提交
30

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

X
xiexiyun 已提交
33 34
| 参数名   | 参数类型   | 必填   | 参数描述                                     |
| ----- | ------ | ---- | ---------------------------------------- |
K
kangchongtao 已提交
35 36
| x  | Length \| GridRowSizeOption | 否   | 水平gutter option。    |
| y  | Length \| GridRowSizeOption | 否   | 竖直gutter option。      |
X
xiexiyun 已提交
37 38 39

## GridRowColumnOption

K
kangchongtao 已提交
40 41
栅格在不同宽度设备类型下,栅格列数。

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

X
xiexiyun 已提交
44 45 46 47 48 49 50 51 52
| 参数名   | 参数类型   | 必填   | 参数描述                                     |
| ----- | ------ | ---- | ---------------------------------------- |
| xs  | number | 否    | 最小宽度类型设备。    |
| sm  | number | 否    | 小宽度类型设备。      |
| md  | number | 否    | 中等宽度类型设备。    |
| lg  | number | 否    | 大宽度类型设备。      |
| xl  | number | 否    | 特大宽度类型设备。    |
| xxl | number | 否    | 超大宽度类型设备。    |

K
kangchongtao 已提交
53 54 55 56
## GridRowSizeOption

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

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

K
kangchongtao 已提交
59 60 61 62 63 64 65 66 67
| 参数名   | 参数类型   | 必填   | 参数描述                                     |
| ----- | ------ | ---- | ---------------------------------------- |
| xs  | Length | 否    | 最小宽度类型设备。    |
| sm  | Length | 否    | 小宽度类型设备。      |
| md  | Length | 否    | 中等宽度类型设备。    |
| lg  | Length | 否    | 大宽度类型设备。      |
| xl  | Length | 否    | 特大宽度类型设备。    |
| xxl | Length | 否    | 超大宽度类型设备。    |

X
xiexiyun 已提交
68 69
## BreakPoints

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

X
xiexiyun 已提交
72 73
| 参数名   | 参数类型   | 必填   | 参数描述                                     |
| ----- | ------ | ---- | ---------------------------------------- |
74
| value  | Array&lt;string&gt; | 否  | 设置断点位置的单调递增数组。<br>默认值:["320vp", "600vp", "840vp"]    |
X
xiexiyun 已提交
75
| reference  | BreakpointsReference | 否    | 断点切换参照物。 |
X
xiexiyun 已提交
76 77 78 79
```ts
  // 启用xs、sm、md共3个断点
  breakpoints: {value: ["100vp", "200vp"]}
  // 启用xs、sm、md、lg共4个断点,断点范围值必须单调递增
80
  breakpoints: {value: ["320vp", "600vp", "840vp"]}
X
xiexiyun 已提交
81
  // 启用xs、sm、md、lg、xl共5个断点,断点范围数量不可超过断点可取值数量-1
82
  breakpoints: {value: ["320vp", "600vp", "840vp", "1080vp"]}
X
xiexiyun 已提交
83 84 85
```

## BreakpointsReference枚举类型
86 87 88

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

X
xiexiyun 已提交
89 90 91 92 93 94
| 枚举名 | 描述 |
| -------- | -------- |
| WindowSize | 以窗口为参照。 |
| ComponentSize | 以容器为参照。 |

## GridRowDirection枚举类型
95 96 97

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

X
xiexiyun 已提交
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| 枚举名 | 描述 |
| -------- | -------- |
| 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    |
| ----- | ------ | ---- | ---- | -----|-----|---------|--------|------|------- |------- |------- |
| $\circ$ | $\circ$ | $\circ$ | $\circ$ | $\circ$|$\circ$| - |  - |  - |  -  | -  | -  |
| -     | -     | -     | -     | -     |       |       |       |       |       |   |   |
| $\circ$ | $\circ$ | $\circ$ | $\circ$ | $\circ$|$\circ$|$\circ$|$\circ$|  |   |   |   |

## 属性

支持[通用属性](ts-universal-attributes-size.md)


## 事件

### onBreakpointChange

G
gmy 已提交
136
onBreakpointChange(callback: (breakpoints: string) => void)
X
xiexiyun 已提交
137

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

X
xiexiyun 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
**参数:**

| 参数名   | 参数类型   | 必填   | 说明   |
| ----- | ------ | ---- | ---------------------------------------- |
|breakpoints| string |是|断点发生变化时触发回调<br>取值为`"xs"``"sm"``"md"``"lg"``"xl"``"xxl"`。|

## 示例

```ts
// 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'
Y
yamila 已提交
155

X
xiexiyun 已提交
156 157 158 159
  build() {
    Column() {
      GridRow({
        columns: 5,
Y
yamila 已提交
160 161 162
        gutter: { x: 5, y: 10 },
        breakpoints: { value: ["400vp", "600vp", "800vp"],
          reference: BreakpointsReference.WindowSize },
X
xiexiyun 已提交
163 164
        direction: GridRowDirection.Row
      }) {
Y
yamila 已提交
165 166
        ForEach(this.bgColors, (color) => {
          GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 } }) {
X
xiexiyun 已提交
167 168 169 170 171 172 173
            Row().width("100%").height("20vp")
          }.borderColor(color).borderWidth(2)
        })
      }.width("100%").height("100%")
      .onBreakpointChange((breakpoint) => {
        this.currentBp = breakpoint
      })
Y
yamila 已提交
174 175
    }.width('80%').margin({ left: 10, top: 5, bottom: 5 }).height(200)
    .border({ color: '#880606', width: 2 })
X
xiexiyun 已提交
176 177 178 179 180
  }
}
```

![figures/gridrow.png](figures/gridrow.png)