• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>sm?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>md?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>lg?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;}<br/>} | 设置在特定设备宽度类型下的占用列数和偏移列数,span:&nbsp;占用列数;&nbsp;offset:&nbsp;偏移列数。<br/>当值为number类型时,仅设置列数,&nbsp;当格式如{"span":&nbsp;1,&nbsp;"offset":&nbsp;0}时,指同时设置占用列数与偏移列数。<br/>-&nbsp;xs:&nbsp;指设备宽度类型为SizeType.XS时的占用列数和偏移列数。<br/>-&nbsp;sm:&nbsp;指设备宽度类型为SizeType.SM时的占用列数和偏移列数。<br/>-&nbsp;md:&nbsp;指设备宽度类型为SizeType.MD时的占用列数和偏移列数。<br/>-&nbsp;lg:&nbsp;指设备宽度类型为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)时,&nbsp;当前组件沿着父组件Start方向,偏移的列数,也就是当前组件位于第n列。<br/>**说明:**<br/>- 配置该属性后,当前组件在父组件水平方向的布局不再跟随父组件原有的布局方式,而是沿着父组件的Start方向偏移一定位移。<br/>- 偏移位移&nbsp;=&nbsp;(列宽&nbsp;+&nbsp;间距)\*&nbsp;列数。<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![zh-cn_image_0000001174582872](figures/zh-cn_image_0000001174582872.png)
119
120**图2** 设备宽度为MD
121
122![zh-cn_image_0000001219744207](figures/zh-cn_image_0000001219744207.png)
123
124**图3** 设备宽度为LG
125
126![zh-cn_image_0000001219982727](figures/zh-cn_image_0000001219982727.png)
127
128**图4** 单独设置gridSpan和gridOffset在特定屏幕大小下的效果与useSizeType效果一致
129
130![gridSpan](figures/gridSpan.png)