• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# GridItem
2
3网格容器中单项内容容器。
4
5>  **说明:**
6>
7>  * 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>  * 仅支持作为[Grid](ts-container-grid.md)组件的子组件使用。
9
10
11## 子组件
12
13可以包含子组件。
14
15
16## 接口
17
18GridItem()
19
20
21## 属性
22
23| 名称 | 参数类型 | 描述 |
24| -------- | -------- | -------- |
25| rowStart | number | 指定当前元素起始行号。 |
26| rowEnd | number | 指定当前元素终点行号。 |
27| columnStart | number | 指定当前元素起始列号。 |
28| columnEnd | number | 指定当前元素终点列号。 |
29| forceRebuild<sup>(deprecated)</sup> | boolean | 设置在触发组件build时是否重新创建此节点。<br/>从API version9开始废弃。GridItem会根据自身属性和子组件变化自行决定是否需要重新创建,无需设置。<br/>默认值:false |
30| selectable<sup>8+</sup> | boolean | 当前GridItem元素是否可以被鼠标框选。<br/>>&nbsp;&nbsp;**说明:**<br/>>&nbsp;外层Grid容器的鼠标框选开启时,GridItem的框选才生效。<br/>默认值:true |
31| selected<sup>10+</sup> | boolean | 设置当前GridItem选中状态。该属性支持[$$](../../quick-start/arkts-two-way-sync.md)双向绑定变量。<br/>**说明:**<br/>该属性需要在设置[选中态样式](./ts-universal-attributes-polymorphic-style.md)前使用才能生效选中态样式。<br/>默认值:false|
32
33>  **说明:**
34>
35>  起始行号、终点行号、起始列号、终点列号生效规则如下:
36>
37>  rowStart/rowEnd合理取值范围为0\~总行数-1,columnStart/columnEnd合理取值范围为0\~总列数-1。
38>
39>  只有在设置columnTemplate和rowTemplate的Grid中,设置合理的rowStart/rowEnd/columnStart/columnEnd四个属性的GridItem才能按照指定的行列号布局。
40>
41>  在设置columnTemplate和rowTemplate的Grid中,单独设置行号rowStart/rowEnd或列号columnStart/columnEnd的GridItem会按照一行一列进行布局。
42>
43>  在只设置columnTemplate的Grid中设置列号columnStart/columnEnd的GridItem按照列数布局。在该区域位置存在GridItem布局,则直接换行进行放置。
44>
45>  在只设置rowTemplate的Grid中设置行号rowStart/rowEnd的GridItem按照行数布局。在该区域位置存在GridItem布局,则直接换列进行放置。
46>
47>  在只设置columnTemplate的Grid中,在GridItem上设置了不合理的值,GridItem按照一行一列进行布局。
48>
49>  columnTemplate和rowTemplate都不设置的Grid中GridItem的行列号属性无效。
50
51
52## 事件
53
54| 名称 | 功能描述 |
55| -------- | -------- |
56| onSelect(event:&nbsp;(isSelected:&nbsp;boolean)&nbsp;=&gt;&nbsp;void)<sup>8+</sup> | GridItem元素被鼠标框选的状态改变时触发回调。<br/>isSelected:进入鼠标框选范围即被选中返回true,&nbsp;移出鼠标框选范围即未被选中返回false。 |
57
58
59## 示例
60
61```ts
62// xxx.ets
63@Entry
64@Component
65struct GridItemExample {
66  @State numbers: string[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
67
68  build() {
69    Column() {
70      Grid() {
71        GridItem() {
72          Text('4')
73            .fontSize(16)
74            .backgroundColor(0xFAEEE0)
75            .width('100%')
76            .height('100%')
77            .textAlign(TextAlign.Center)
78        }.rowStart(1).rowEnd(2).columnStart(1).columnEnd(2) // 同时设置合理的行列号
79
80        ForEach(this.numbers, (item: string) => {
81          GridItem() {
82            Text(item)
83              .fontSize(16)
84              .backgroundColor(0xF9CF93)
85              .width('100%')
86              .height('100%')
87              .textAlign(TextAlign.Center)
88          }
89        }, (item: string) => item)
90
91        GridItem() {
92          Text('5')
93            .fontSize(16)
94            .backgroundColor(0xDBD0C0)
95            .width('100%')
96            .height('100%')
97            .textAlign(TextAlign.Center)
98        }.columnStart(1).columnEnd(4) // 只设置列号,不会从第1列开始布局
99      }
100      .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
101      .rowsTemplate('1fr 1fr 1fr 1fr 1fr')
102      .width('90%').height(300)
103    }.width('100%').margin({ top: 5 })
104  }
105}
106```
107
108![zh-cn_image_0000001174582870](figures/zh-cn_image_0000001174582870.gif)
109