2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

07-19 1198阅读

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

})

}

}

}

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

2、设置列数

当columns为自定义值,栅格布局在任何尺寸设备下都被分为columns列。

@Entry

@Component

struct Index {

@State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

@State currentBp: string = ‘unknown’;

build() {

Row() {

GridRow({ columns: 4 }) {

ForEach(this.bgColors, (item, index) => {

GridCol() {

Row() {

Text(${index + 1})

}.width(‘100%’).height(‘50’)

}.backgroundColor(item)

})

}

.width(‘100%’).height(‘100%’)

.onBreakpointChange((breakpoint) => {

this.currentBp = breakpoint

})

}

.height(160)

.border({ color: Color.Blue, width: 2 })

.width(‘100%’)

}

}

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

3、公用

@Entry

@Component

struct Index {

@State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

@State currentBp: string = ‘unknown’;

build() {

GridRow({ columns: { sm: 4, md: 8 }, breakpoints: { value: [‘200vp’, ‘300vp’, ‘400vp’, ‘500vp’, ‘600vp’] } }) {

ForEach(this.bgColors, (item, index) => {

GridCol() {

Row() {

Text(${index + 1})

}.width(‘100%’).height(‘50’)

}.backgroundColor(item)

})

}

}

}

2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

若只设置sm, md的栅格总列数,则较小的尺寸使用默认columns值12,较大的尺寸使用前一个尺寸的columns。这里只设置sm:4, md:8,则较小尺寸的xs:12,较大尺寸的参照md的设置,lg:8, xl:8, xxl:8。

2.3 排列方向

可以通过设置GridRow的direction属性来指定栅格子组件在栅格容器中的排列方向。

该属性可以设置为

  • GridRowDirection.Row(从左往右排列)
  • GridRowDirection.RowReverse(从右往左排列)

    @Entry

    @Component

    struct Index {

    @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

    @State currentBp: string = ‘unknown’;

    build() {

    GridRow({ columns: { sm: 4, md: 8 }, breakpoints: { value: [‘200vp’, ‘300vp’, ‘400vp’, ‘500vp’, ‘600vp’] } ,direction: GridRowDirection.RowReverse}) {

    ForEach(this.bgColors, (item, index) => {

    GridCol() {

    Row() {

    Text(${index + 1})

    }.width(‘100%’).height(‘50’)

    }.backgroundColor(item)

    })

    }

    }

    }

    2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

    2.4 子组件间距

    可以通过设置GridRow的gutter属性来指定栅格子组件在栅格容器中的排列方向。

    该属性可以设置为

    • 单个值GridRow({ gutter: 10 }){}(X:10,Y:10)
    • 多个值GridRow({ gutter: { x: 20, y: 50 } }){}(X:20,Y:50)

      @Entry

      @Component

      struct Index {

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      @State currentBp: string = ‘unknown’;

      build() {

      GridRow({ columns: { sm: 4}, breakpoints: { value: [‘200vp’, ‘300vp’, ‘400vp’, ‘500vp’, ‘600vp’] } ,direction: GridRowDirection.RowReverse,gutter: { x: 20, y: 50 }}) {

      ForEach(this.bgColors, (item, index) => {

      GridCol() {

      Row() {

      Text(${index + 1})

      }.width(‘100%’).height(‘50’)

      }.backgroundColor(item)

      })

      }

      }

      }

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      3.子组件GridCol

      GridCol组件作为GridRow组件的子组件,通过给GridCol传参或者设置属性两种方式,设置span(占用列数),offset(偏移列数),order(元素序号)的值。

      设置span。

      GridCol({ span: 2 }){}

      GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 } }){}

      GridCol(){}.span(2)

      GridCol(){}.span({ xs: 1, sm: 2, md: 3, lg: 4 })

      设置offset。

      GridCol({ offset: 2 }){}

      GridCol({ offset: { xs: 2, sm: 2, md: 2, lg: 2 } }){}

      GridCol(){}.offset(2)

      GridCol(){}.offset({ xs: 1, sm: 2, md: 3, lg: 4 })

      设置order。

      GridCol({ order: 2 }){}

      GridCol({ order: { xs: 1, sm: 2, md: 3, lg: 4 } }){}

      GridCol(){}.order(2)

      GridCol(){}.order({ xs: 1, sm: 2, md: 3, lg: 4 })

      3.1 span

      在栅格布局中,span属性表示某个元素或组件应该跨越的列数。例如,如果我们有一个包含12个列的栅格系统,我们可以使用span属性来指定一个元素应该占用多少列。

      例如,如果我们希望一个元素占用3列,我们可以使用{ span: 3 },这将使元素跨越3列。同样,如果我们希望元素跨越整个栅格系统,我们可以使用{ span: 12 }。

      在具体的代码实现中,不同的栅格系统可能会使用不同的方式实现span属性,但通常都会提供类似于{ span: 3 }的语法来指定元素所占据的列数。

      1、当类型为number时,子组件在所有尺寸设备下占用的列数相同。

      @Entry

      @Component

      struct Index {

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      @State currentBp: string = ‘unknown’;

      build() {

      GridRow({ columns: 8 }) {

      ForEach(this.bgColors, (color, index) => {

      GridCol({ span: 2 }) {

      Row() {

      Text(${index})

      }.width(‘100%’).height(‘50vp’)

      }

      .backgroundColor(color)

      })

      }

      }

      }

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      2、当类型为GridColColumnOption时,支持六种不同尺寸(xs, sm, md, lg, xl, xxl)设备中子组件所占列数设置,各个尺寸下数值可不同。

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      GridRow({ columns: 8 }) {

      ForEach(this.bgColors, (color, index) => {

      GridCol({ span: { xs: 3, sm: 3, md: 3, lg: 3 } }) {

      Row() {

      Text(${index})

      }.width(‘100%’).height(‘50vp’)

      }

      .backgroundColor(color)

      })

      }

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      3.2 offset

      栅格布局的offset是指在栅格布局中,元素相对于其父元素的偏移量。使用offset可以将元素移动到栅格中的任意位置。在栅格布局中,通常使用偏移量来实现布局的灵活和自适应性。具体的偏移量取决于栅格的列数和元素所占的列数。通常,一般情况下,偏移量是通过给元素添加相应的类来实现的,例如:{ offset: 3 }表示元素在中等屏幕上向右偏移3个栅格。

      1、当类型为number时,子组件偏移相同列数

      @Entry

      @Component

      struct Index {

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      @State currentBp: string = ‘unknown’;

      build() {

      GridRow({ columns: 8 }) {

      ForEach(this.bgColors, (color, index) => {

      GridCol({ offset: 2 }) {

      Row() {

      Text(${index})

      }.width(‘100%’).height(‘50vp’)

      }

      .backgroundColor(color)

      })

      }

      }

      }

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      2、当类型为GridColColumnOption时,支持六种不同尺寸(xs, sm, md, lg, xl, xxl)设备中子组件所占列数设置,各个尺寸下数值可不同

      @Entry

      @Component

      struct Index {

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      @State currentBp: string = ‘unknown’;

      build() {

      GridRow({ columns: 8 }) {

      ForEach(this.bgColors, (color, index) => {

      GridCol({ offset: { xs: 1, sm: 3, md: 2, lg: 4 } }) {

      Row() {

      Text(${index})

      }.width(‘100%’).height(‘50vp’)

      }

      .backgroundColor(color)

      })

      }

      }

      }

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      3.3 order

      栅格布局中,order属性用于指定网格项的显示顺序。默认情况下,网格项的显示顺序是按照它们在 HTML 代码中出现的顺序进行排列。通过设置 order 属性,可以改变网格项的显示顺序。

      order 属性的值是一个整数,表示网格项的显示顺序。值越小的网格项越先显示,值相同的网格项按照它们在 HTML 代码中的顺序进行排列。若未设置该属性,则默认值为 0。

      1、当类型为number时,子组件在任何尺寸下排序次序一致。

      @Entry

      @Component

      struct Index {

      @State bgColors: Color[] = [Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Pink, Color.Grey, Color.Blue, Color.Brown];

      @State currentBp: string = ‘unknown’;

      build() {

      GridRow() {

      GridCol({ order: 4 }) {

      Row() {

      Text(‘1’)

      }.width(‘100%’).height(‘50vp’)

      }.backgroundColor(Color.Red)

      GridCol({ order: 3 }) {

      Row() {

      Text(‘2’)

      }.width(‘100%’).height(‘50vp’)

      }.backgroundColor(Color.Orange)

      GridCol({ order: 2 }) {

      Row() {

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      2024年HarmonyOS鸿蒙最全鸿蒙HarmonyOS实战-ArkUI组件(GridRow GridCol)

      网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

      需要这份系统化的资料的朋友,可以戳这里获取

      一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

      olor.Orange)

      GridCol({ order: 2 }) {

      Row() {

      [外链图片转存中…(img-tLcDitsI-1715624420573)]

      [外链图片转存中…(img-EWlNkykr-1715624420573)]

      网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

      需要这份系统化的资料的朋友,可以戳这里获取

      一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]