1# 栅格设置 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @zju_ljz--> 5<!--Designer: @lanshouren--> 6<!--Tester: @liuli0427--> 7<!--Adviser: @HelloCrease--> 8 9栅格设置可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题,保证不同设备上各个模块的布局一致性。 10 11> **说明:** 12> 13> - 从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 14> 15> - 从API version 9开始,该模块不再维护,推荐使用新组件[GridCol](ts-container-gridcol.md)、[GridRow](ts-container-gridrow.md)替代。 16> 17> - 栅格布局的列宽、列间距由距离最近的GridContainer父组件决定。使用栅格属性的组件树上至少需要有1个GridContainer容器组件。 18> 19> - gridSpan、gridOffset属性调用时其父组件或祖先组件必须是GridContainer。 20 21## 属性 22 23**系统能力:** SystemCapability.ArkUI.ArkUI.Full 24 25| 名称 | 参数类型 | 描述 | 26| ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ | 27| useSizeType<sup>(deprecated) </sup> | {<br/>xs?: number \| { span: number, offset: number },<br/>sm?: number \| { span: number, offset: number },<br/>md?: number \| { span: number, offset: number },<br/>lg?: number \| { span: number, offset: number }<br/>} | 设置在特定设备宽度类型下的占用列数和偏移列数,span: 占用列数; offset: 偏移列数。<br/>当值为number类型时,仅设置列数, 当格式如{"span": 1, "offset": 0}时,指同时设置占用列数与偏移列数。<br/>- xs: 指设备宽度类型为SizeType.XS时的占用列数和偏移列数。<br/>- sm: 指设备宽度类型为SizeType.SM时的占用列数和偏移列数。<br/>- md: 指设备宽度类型为SizeType.MD时的占用列数和偏移列数。<br/>- lg: 指设备宽度类型为SizeType.LG时的占用列数和偏移列数。<br/>该属性从API version 9开始废弃,推荐使用新组件[GridCol](ts-container-gridcol.md)、[GridRow](ts-container-gridrow.md)。 | 28| gridSpan<sup>(deprecated) </sup> | number | 默认占用列数,指useSizeType属性没有设置对应尺寸的列数(span)时,占用的栅格列数。<br/>**说明:**<br/>设置了栅格span属性,组件的宽度由栅格布局决定。<br>默认值:1<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。<br/>该属性从API version 14开始废弃,推荐使用新组件[GridCol](ts-container-gridcol.md)、[GridRow](ts-container-gridrow.md)。 | 29| gridOffset<sup>(deprecated) </sup> | number | 默认偏移列数,指useSizeType属性没有设置对应尺寸的偏移(offset)时, 当前组件沿着父组件Start方向,偏移的列数,也就是当前组件位于第n列。<br/>**说明:**<br/>- 配置该属性后,当前组件在父组件水平方向的布局不再跟随父组件原有的布局方式,而是沿着父组件的Start方向偏移一定位移。<br/>- 偏移位移 = (列宽 + 间距)\* 列数。<br/>- 设置了偏移(gridOffset)的组件之后的兄弟组件会根据该组件进行相对布局,类似相对布局。<br>默认值:0<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。<br/>该属性从API version 14开始废弃,推荐使用新组件[GridCol](ts-container-gridcol.md)、[GridRow](ts-container-gridrow.md)。 | 30 31## 示例 32 33设置不同设备类型的宽度,以及单独设置组件的span和offset,在sm尺寸大小的设备上使用useSizeType中sm的数据实现一样的效果。 34 35<!--code_no_check--> 36 37```ts 38// xxx.ets 39@Entry 40@Component 41struct GridContainerExample1 { 42 build() { 43 Column() { 44 Text('useSizeType').fontSize(15).fontColor(0xCCCCCC).width('90%') 45 GridContainer() { 46 Row() { 47 Row() { 48 Text('Left').fontSize(25) 49 } 50 .useSizeType({ 51 xs: { span: 1, offset: 0 }, sm: { span: 1, offset: 0 }, 52 md: { span: 1, offset: 0 }, lg: { span: 2, offset: 0 } 53 }) 54 .height("100%") 55 .backgroundColor(0x66bbb2cb) 56 57 Row() { 58 Text('Center').fontSize(25) 59 } 60 .useSizeType({ 61 xs: { span: 1, offset: 0 }, sm: { span: 2, offset: 1 }, 62 md: { span: 5, offset: 1 }, lg: { span: 7, offset: 2 } 63 }) 64 .height("100%") 65 .backgroundColor(0x66b6c5d1) 66 67 Row() { 68 Text('Right').fontSize(25) 69 } 70 .useSizeType({ 71 xs: { span: 1, offset: 0 }, sm: { span: 1, offset: 3 }, 72 md: { span: 2, offset: 6 }, lg: { span: 3, offset: 9 } 73 }) 74 .height("100%") 75 .backgroundColor(0x66bbb2cb) 76 } 77 .height(200) 78 79 } 80 .backgroundColor(0xf1f3f5) 81 .margin({ top: 10 }) 82 83 // 单独设置组件的span和offset,在sm尺寸大小的设备上使用useSizeType中sm的数据实现一样的效果 84 Text('gridSpan,gridOffset').fontSize(15).fontColor(0xCCCCCC).width('90%') 85 GridContainer() { 86 Row() { 87 Row() { 88 Text('Left').fontSize(25) 89 } 90 .gridSpan(1) 91 .height("100%") 92 .backgroundColor(0x66bbb2cb) 93 94 Row() { 95 Text('Center').fontSize(25) 96 } 97 .gridSpan(2) 98 .gridOffset(1) 99 .height("100%") 100 .backgroundColor(0x66b6c5d1) 101 102 Row() { 103 Text('Right').fontSize(25) 104 } 105 .gridSpan(1) 106 .gridOffset(3) 107 .height("100%") 108 .backgroundColor(0x66bbb2cb) 109 }.height(200) 110 } 111 } 112 } 113} 114``` 115 116**图1** 设备宽度为SM 117 118 119 120**图2** 设备宽度为MD 121 122 123 124**图3** 设备宽度为LG 125 126 127 128**图4** 单独设置gridSpan和gridOffset在特定屏幕大小下的效果与useSizeType效果一致 129 130