# 5.4:格栅布局容器(GridContainer)

ArkUI开发框架提供了纵向排布栅格布局容器 GridContainer ,它仅在栅格布局场景中使用。

# 5.4.1:GridContainer定义介绍

interface GridContainerInterface {
  (value?: GridContainerOptions): GridContainerAttribute;
}

declare interface GridContainerOptions {
  columns?: number | "auto";
  sizeType?: SizeType;
  gutter?: number | string;
  margin?: number | string;
}
1
2
3
4
5
6
7
8
9
10
  • value:设置布局的可选参数, GridContainerOptions 说明如下:

    • columns:设置当前布局总列数,默认为 auto
    • sizeType:设置选用设备宽度类型, SizeType 参数说明如下:
      • XS:最小宽度类型设备。
      • SM:小宽度类型设备。
      • MD:中等宽度类型设备。
      • LG:大宽度类型设备。
      • Auto(默认值):根据设备类型进行选择。
    • gutter:设置栅格布局列间距。
    • margin:设置栅格布局两侧间距。

    简单样例如下所示:

    @Entry @Component struct ComponentTest {
      
      @State sizeType: SizeType = SizeType.XS // 默认采用最小宽度设备类型
    
      build() {
        Column() {
          GridContainer({
            columns: 12,                      // 设置格栅布局为12列
            sizeType: this.sizeType,          // 设置格栅布局类型
            gutter: 10,                       // 设置格栅布局列间距,该版本还有bug
            margin: 20                        // 设计格栅布局两侧间距
          }) {
            Row() {
              Text('1')
                .useSizeType({
                  xs: { span: 6, offset: 0 }, // Text1在xs设备上占用6列
                  sm: { span: 2, offset: 0 }, // Text1在sm设备上占用2列
                  md: { span: 2, offset: 0 }, // Text1在md设备上占用2列
                  lg: { span: 3, offset: 0 }  // Text1在lg设备上占用3列
                })
                .fontSize(20)
                .height(50)
                .backgroundColor(0x4682B4)
                .textAlign(TextAlign.Center)
              Text('2')
                .useSizeType({
                  xs: { span: 2, offset: 0 }, // Text2在xs设备上占用2列
                  sm: { span: 6, offset: 0 }, // Text2在sm设备上占用6列
                  md: { span: 2, offset: 0 }, // Text2在md设备上占用2列
                  lg: { span: 3, offset: 0 }  // Text2在lg设备上占用3列
                })
                .fontSize(20)
                .height(50)
                .backgroundColor(0x00BFFF)
                .textAlign(TextAlign.Center)
              Text('3')
                .useSizeType({
                  xs: { span: 2, offset: 0 }, // Text3在xs设备上占用2列
                  sm: { span: 2, offset: 0 }, // Text3在sm设备上占用2列
                  md: { span: 6, offset: 0 }, // Text3在md设备上占用6列
                  lg: { span: 3, offset: 0 }  // Text3在lg设备上占用3列
                })
                .fontSize(20)
                .height(50)
                .backgroundColor(0x4682B4)
                .textAlign(TextAlign.Center)
              Text('4')
                .useSizeType({
                  xs: { span: 2, offset: 0 }, // Text4在xs设备上占用2列
                  sm: { span: 2, offset: 0 }, // Text4在sm设备上占用2列
                  md: { span: 2, offset: 0 }, // Text4在md设备上占用2列
                  lg: { span: 3, offset: 0 }  // Text4在lg设备上占用3列
                })
                .fontSize(20)
                .height(50)
                .backgroundColor(0x00BFFF)
                .textAlign(TextAlign.Center)
            }
          }
          .backgroundColor(Color.Pink)
          .width('90%')
          .margin({top: 10})
    
          Row({space: 10}) {
            Button('XS')
              .onClick(() => {
                this.sizeType = SizeType.XS
              }).backgroundColor(0x317aff)
            Button('SM')
              .onClick(() => {
                this.sizeType = SizeType.SM
              }).backgroundColor(0x317aff)
            Button('MD')
              .onClick(() => {
                this.sizeType = SizeType.MD
              }).backgroundColor(0x317aff)
            Button('LG')
              .onClick(() => {
                this.sizeType = SizeType.LG
              }).backgroundColor(0x317aff)
          }
          .margin({top: 10})
        }.width('100%')
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85

    样例运行结果如下图所示:

    5_4_1_1
(adsbygoogle = window.adsbygoogle || []).push({});
请作者喝杯咖啡

津公网安备 12011402001367号

津ICP备2020008934号-2