# GridRow æ …æ ¼å¸ƒå±€å¯ä»¥ä¸ºå¸ƒå±€æ供规律性的结构,解决多尺寸多设备的动æ€å¸ƒå±€é—®é¢˜ï¼Œä¿è¯ä¸åŒè®¾å¤‡ä¸Šå„个模å—的布局一致性。 æ …æ ¼å®¹å™¨ç»„ä»¶ï¼Œä»…å¯ä»¥å’Œæ …æ ¼å组件([GridCol](ts-container-gridcol.md))åœ¨æ …æ ¼å¸ƒå±€åœºæ™¯ä¸ä½¿ç”¨ã€‚ > **说明:** > > 该组件从API Version 9开始支æŒã€‚åŽç»ç‰ˆæœ¬å¦‚æœ‰æ–°å¢žå†…å®¹ï¼Œåˆ™é‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°è¯¥å†…容的起始版本。 ## å组件 å¯ä»¥åŒ…å«GridColå组件。 ## æŽ¥å£ GridRow(option?: GridRowOptions) **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å |类型|å¿…å¡«|说明| |-----|-----|----|----| | option | [GridRowOptions](#gridrowoptions对象说明) | å¦ | æ …æ ¼å¸ƒå±€å组件å‚数。 | ## GridRowOptions对象说明 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 |类型|å¿…å¡«|说明| |-----|-----|----|----| |columns| number \| [GridRowColumnOption](#gridrowcolumnoption) | å¦ |设置布局列数。<br />默认值:12 | |gutter|[Length](ts-types.md#length) \| [GutterOption](#gutteroption)| å¦ |æ …æ ¼å¸ƒå±€é—´è·ã€‚<br />默认值:0 | |breakpoints|[BreakPoints](#breakpoints)| å¦ |设置æ–点值的æ–点数列以åŠåŸºäºŽçª—å£æˆ–容器尺寸的相应å‚照。<br />默认值:<br />{<br />value: ["320vp", "600vp", "840vp"],<br />reference: BreakpointsReference.WindowSize<br />} | |direction|[GridRowDirection](#gridrowdirection枚举说明)| å¦ |æ …æ ¼å¸ƒå±€æŽ’åˆ—æ–¹å‘。<br />默认值:GridRowDirection.Row | ## GutterOption æ …æ ¼å¸ƒå±€é—´è·ç±»åž‹ï¼Œç”¨äºŽæè¿°æ …æ ¼å组件ä¸åŒæ–¹å‘çš„é—´è·ã€‚ **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 类型 | å¿…å¡« | 说明 | | ----- | ------ | ---- | ---------------------------------------- | | x | [Length](ts-types.md#length) \| [GridRowSizeOption](#gridrowsizeoption) | å¦ | æ …æ ¼å组件水平方å‘é—´è·ã€‚ | | y | [Length](ts-types.md#length) \| [GridRowSizeOption](#gridrowsizeoption) | å¦ | æ …æ ¼å组件竖直方å‘é—´è·ã€‚ | ## GridRowColumnOption æ …æ ¼åœ¨ä¸åŒå®½åº¦è®¾å¤‡ç±»åž‹ä¸‹ï¼Œæ …æ ¼åˆ—æ•°ã€‚ **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 类型 | å¿…å¡« | 说明 | | ----- | ------ | ---- | ---------------------------------------- | | xs | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºxsçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | | sm | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºsmçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | | md | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºmdçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | | lg | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºlgçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | | xl | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºxlçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | | xxl | number | å¦ | åœ¨æ …æ ¼å¤§å°ä¸ºxxlçš„è®¾å¤‡ä¸Šï¼Œæ …æ ¼å®¹å™¨ç»„ä»¶çš„æ …æ ¼åˆ—æ•°ã€‚ | **说明:** 在GridRowæ …æ ¼ç»„ä»¶ä¸ï¼Œå…许开å‘者使用breakpoints自定义修改[æ–点](../../../ui/arkts-layout-development-grid-layout.md#æ …æ ¼ç³»ç»Ÿæ–点)çš„å–值范围,最多支æŒ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) | ## GridRowSizeOption æ …æ ¼åœ¨ä¸åŒå®½åº¦è®¾å¤‡ç±»åž‹ä¸‹ï¼Œgutter的大å°ã€‚ **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 类型 | å¿…å¡« | 说明 | | ----- | ------ | ---- | ---------------------------------------- | | xs | [Length](ts-types.md#length) | å¦ | 在最å°å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | | sm | [Length](ts-types.md#length) | å¦ | 在å°å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | | md | [Length](ts-types.md#length) | å¦ | 在ä¸ç‰å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | | lg | [Length](ts-types.md#length) | å¦ | åœ¨å¤§å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | | xl | [Length](ts-types.md#length) | å¦ | åœ¨ç‰¹å¤§å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | | xxl | [Length](ts-types.md#length) | å¦ | åœ¨è¶…å¤§å®½åº¦ç±»åž‹è®¾å¤‡ä¸Šï¼Œæ …æ ¼å组件的间è·ã€‚ | ## BreakPoints è®¾ç½®æ …æ ¼å®¹å™¨ç»„ä»¶çš„æ–点。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 类型 | å¿…å¡« | 说明 | | ----- | ------ | ---- | ---------------------------------------- | | value | Array<string> | å¦ | 设置æ–点ä½ç½®çš„å•è°ƒé€’增数组。<br>默认值:["320vp", "600vp", "840vp"] | | reference | [BreakpointsReference](#breakpointsreference枚举说明) | å¦ | æ–点切æ¢å‚照物。<br>默认值:BreakpointsReference.WindowSize | ```ts // å¯ç”¨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å¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 说明 | | -------- | -------- | | WindowSize | 以窗å£ä¸ºå‚照。 | | ComponentSize | 以容器为å‚照。 | ## GridRowDirection枚举说明 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full | å称 | 说明 | | -------- | -------- | | Row | æ …æ ¼å…ƒç´ æŒ‰ç…§è¡Œæ–¹å‘排列。 | | RowReverse | æ …æ ¼å…ƒç´ æŒ‰ç…§é€†åºè¡Œæ–¹å‘排列。 | **说明:** * æ …æ ¼å…ƒç´ ä»…æ”¯æŒ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)外,还支æŒä»¥ä¸‹å±žæ€§ï¼š ### alignItems<sup>10+</sup> alignItems(value: ItemAlign) 设置GridRowä¸çš„GridCol垂直主轴方å‘对é½æ–¹å¼ã€‚GridCol本身也å¯é€šè¿‡alignSelf([ItemAlign](ts-appendix-enums.md#itemalign))设置自身对é½æ–¹å¼ã€‚当上述两ç§å¯¹é½æ–¹å¼éƒ½è®¾ç½®æ—¶ï¼Œä»¥GridCol自身设置为准。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 10开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ | | value | [ItemAlign](ts-appendix-enums.md#itemalign) | 是 | GridRowä¸çš„GridCol垂直主轴方å‘对é½æ–¹å¼ã€‚<br/>默认值:ItemAlign.Start<br/>**说明**:<br/>ItemAlign支æŒçš„枚举:ItemAlign.Startã€ItemAlign.Centerã€ItemAlign.Endã€ItemAlign.Stretch。 | ## 事件 ### onBreakpointChange onBreakpointChange(callback: (breakpoints: string) => void) æ–点å‘生å˜åŒ–时触å‘回调。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 9开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | ----- | ------ | ---- | ---------------------------------------- | |breakpoints| string |å¦|å–值为`"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' 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 }) } } ``` 