鸿蒙开发进阶:一次开发,多端部署的两把利剑(GridRow、GridCol)

12 篇文章 0 订阅
12 篇文章 0 订阅

栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局, 问题 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。

1. GridRow属性合集

  1. columns,决定了row共分为几份
  2. gutter,决定了上下左右的边距,可以设置 Length | GutterOption
  3. direction,设置正反方向,一般默认
  4. breakpoints,关键属性见下面
  // 启用xs、sm、md共3个断点
  breakpoints: {value: ["320vp", "600vp"]}
  // 启用xs、sm、md、lg共4个断点,断点范围值必须单调递增
  breakpoints: {value: ["320vp", "600vp", "840vp"]}
  // 启用xs、sm、md、lg、xl共5个断点,断点范围数量不可超过断点可取值数量-1
  breakpoints: {value: ["320vp", "600vp", "840vp", "1080vp"]}

2. GridCol只有一个属性option:GridColOptions

span、offset、order

  1. span,决定了子组件占用栅格容器的列数。span为0表示不参与布局计算,即不会被渲染。默认值1
  2. offset,栅格子组件相对于原本位置偏移的列数。默认值:0
  3. order,元素的序号,根据栅格子组件的序号,从小到大对栅格子组件做排序。默认值:0,当子组件不设置order或者设置相同的order, 子组件按照代码顺序展示。 当子组件部分设置order,部分不设置order时,未设置order的子组件依次排序靠前,设置了order的子组件按照数值从小到大排列。

3. onBreakpointChange妙用:该方法只能用在GridRow组件上,并根据相关设置自动监听屏幕尺寸变化

.onBreakpointChange((breakpoint) => {
  this.currentBp = breakpoint
}

完整代码如下

GridRow({
  columns: 6,
  gutter: { x: 25, y: 50 },
  breakpoints: { value: ["340vp", "600vp", "780vp"]},
}) {
  ForEach(this.bgColors, (color: Color,index:number) => {
    GridCol({ span: { xs: 1, sm: 6, md: 3, lg: 2 }, offset: 0, order: 0 }) {
      Row(){
        Text(index+'')
      }.width("100%").height("20vp")
    }.borderColor(color).borderWidth(2)
  })
}.width("100%").height("100%")
.onBreakpointChange((breakpoint) => {
  this.currentBp = breakpoint
})

1:sm屏幕,分6份,GridCol占6份,显示单列

2:md屏幕,分6份,GridCol占3份,显示2列

3:lg屏幕,分6份,GridCol占2份,显示3列 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值