赞
踩
Grid组件简介
Grid组件为网格容器,是一种网格列表,由「行」和「列」分割的单元格所组成,通过指定「项目」所在的单元格做出各种各样的布局。
Grid组件一般和子组件GridItem一起使用,Grid列表中的每一个条目对应一个GridItem组件。
和List组件一样,Grid组件也可以使用ForEach来渲染多个列表项GridItem。
通过下面这段示例代码来介绍Grid组件的使用。
@Entry @Component struct GridExample { // 定义一个长度为16的数组 private arr: string[] = new Array(16).fill('').map((_, index) => `item ${index}`); build() { Column() { Grid() { ForEach( this.arr, (item: string) => { GridItem() { Text(item) .fontSize(16) .fontColor(Color.White) .backgroundColor(0x007DFF) .width('100%') .height('100%') .textAlign(TextAlign.Center) } }, item => item) } .scrollBar(BarState.On) // 开启滚动条 .columnsTemplate('1fr 2fr 1fr 1fr') // 列数,且每列占比 .rowsTemplate('1fr 2fr 1fr 1fr') // 行数,且每行占比 .columnsGap(10) // 列间距 .rowsGap(30) // 行间距 .width("100%") .height(500) } .width('100%') .padding(12) .backgroundColor(0xF1F3F5) } }
效果如下
上述代码使用了固定的行数和列数,所以构建出的网格是不可滚动的。
然而有时候因为内容较多,我们通过滚动的方式来显示更多的内容,就需要一个可以滚动的网格布局。
只需要设置rowsTemplate和columnsTemplate中的一个即可,比如想实现竖向滚动条,设置columnsTemplate并给每个GridItem设置height即可。
@Entry @Component struct GridExample { // 定义一个长度为16的数组 private arr: string[] = new Array(16).fill('').map((_, index) => `item ${index}`); build() { Scroll(){ Column({space:60}) { // 网格布局使用了固定的行数和列数,所以构建出的网格是不可滚动的。 // 然而有时候因为内容较多,我们通过滚动的方式来显示更多的内容,就需要一个可以滚动的网格布局。 // 我们只需要设置rowsTemplate和columnsTemplate中的一个即可。 Grid() { ForEach( this.arr, (item: string) => { GridItem() { Text(item) .fontSize(16) .fontColor(Color.White) .backgroundColor(0x007DFF) .width('100%') .height('100%') .textAlign(TextAlign.Center) } }, item => item) } .scrollBar(BarState.On) // 开启滚动条 .columnsTemplate('1fr 2fr 1fr 1fr') // 列数,且每列占比 .rowsTemplate('1fr 2fr 1fr 1fr') // 行数,且每行占比 .columnsGap(10) // 列间距 .rowsGap(30) // 行间距 .width("100%") .height(500) // 将示例代码中GridItem的高度设置为固定值,例如100 // 仅设置columnsTemplate属性,不设置rowsTemplate属性,就可以实现Grid列表的滚动 Grid() { ForEach(this.arr, (item: string) => { GridItem() { Text(item) .height(100) .fontSize(16) .fontColor(Color.White) .backgroundColor(0x007DFF) .width('100%') .textAlign(TextAlign.Center) } }, item => item) } .scrollBar(BarState.On) // 开启滚动条 .columnsTemplate('1fr 1fr 1fr') .columnsGap(10) .rowsGap(10) .height(300) Grid() { ForEach(this.arr, (item: string) => { GridItem() { Text(item) .width(100) .fontSize(16) .fontColor(Color.White) .backgroundColor(0x007DFF) .height('100%') .textAlign(TextAlign.Center) } }, item => item) } .scrollBar(BarState.On) // 开启滚动条 .rowsTemplate('1fr 1fr 1fr') .columnsGap(10) .rowsGap(10) .height(300) } .width('100%') .padding(12) .backgroundColor(0xF1F3F5) } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。