概念
网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等。
ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。Grid组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。
网格布局-计算器
代码如下
@Entry
@Component
struct One{build(){Column(){Row(){Text("计算器").fontSize(28).fontColor(Color.White).fontWeight(FontWeight.Bold).textAlign(TextAlign.Center).width("100%")}.height(60).backgroundColor("#600f").width("100%")Row(){Column(){Text("0").textAlign(TextAlign.End).width("100%").margin({right:20,top:5}).fontSize(26).fontWeight(1).height("50%")Text("0").textAlign(TextAlign.End).width("100%").margin({right:20,top:5}).fontSize(26).fontWeight(1)}.width("100%").height("100%")}.borderWidth(5).borderColor("#600f").margin({ left:20,right:20,top:1 }).width("100%").height(120)Grid(){GridItem(){Button("MC").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1})GridItem(){Button("MR").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("MS").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("M+").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("-").type(ButtonType.Normal).fontSize(24).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({ right:5 })GridItem(){Button("←").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1})GridItem(){Button("CE").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("C").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("±").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("√").type(ButtonType.Normal).fontSize(24).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({ right:5 })GridItem(){Button("7").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1})GridItem(){Button("8").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("9").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("/").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("%").type(ButtonType.Normal).fontSize(24).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({ right:5 })GridItem(){Button("4").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1})GridItem(){Button("5").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("6").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("*").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("1/").type(ButtonType.Normal).fontSize(24).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({ right:5 })GridItem(){Button("1").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1})GridItem(){Button("2").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("3").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("-").type(ButtonType.Normal).fontSize(22).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("=").type(ButtonType.Normal).fontSize(24).margin({bottom:20,top:10}).borderRadius(10).width("98%").height("75%").backgroundColor("#600f")}.margin({ right:5 }).rowStart(4).rowEnd(5)GridItem(){Button("0").type(ButtonType.Normal).fontSize(22).margin({bottom:20}).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}.margin({left:1}).columnStart(0).columnEnd(1)GridItem(){Button(".").type(ButtonType.Normal).fontSize(22).margin({bottom:20}).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}GridItem(){Button("+").type(ButtonType.Normal).fontSize(22).margin({bottom:20}).borderRadius(10).width("98%").height("60%").backgroundColor("#600f")}}.width("100%").height("80%").columnsTemplate("1fr 1fr 1fr 1fr 1fr").rowsTemplate("1fr 1fr 1fr 1fr 1fr 1fr ").columnsGap(5)}.width("100%")}
}