鸿蒙开发相对布局RelativeContainer

元素位置

在水平方向上有left,middle,right三个位置,和VerticalAlign.Top/.Center/.Bottom对应。
在垂直方向上有top,center,bottom三个位置,和HorizontalAlign.Start/.Center/.End对应。

锚点设置

锚点必须有id
RelativeContainer的id:默认为“container”,其余子元素的id:通过id属性设置

对齐方式-垂直

设置锚点anchor之后,可以通过align设置相对于锚点的对齐位置,在垂直方向上,对齐位置可以设置为VerticalAlign.Top/.Center/.Bottom,若同方向上设置两个以上锚点,垂直方向Top和Center优先

子组件位置偏移

子组件经过相对位置对齐后,位置可能还不是目标位置,开发者可根据需要进行额外偏移设置offset。

组件尺寸
子组件尺寸大小不会受到相对布局规则的影响。若子组件某个方向上设置两个或以上alignRules时最好不设置此方向尺寸大小,否则对齐规则确定的组件尺寸与开发者设置的尺寸可能产生冲突。

代码示例


@Entry
@Component
struct Index {

  build() {
    RelativeContainer() {
      Row(){Text('第一个')}.width(100).height(100)
      .id('item1')
      .backgroundColor(Color.Red)
      .alignRules({
        left:{anchor:"__container__",align:HorizontalAlign.Start},
        top:{anchor:"__container__",align:VerticalAlign.Top}
      })

      Row(){Text('第二个')}.width(100).height(100)
      .id('item2')
      .backgroundColor(Color.Yellow)
      .alignRules({
        middle:{anchor:"__container__",align:HorizontalAlign.Center},
        center:{anchor:"__container__",align:VerticalAlign.Center}
      })

      Row(){Text('第三个')}.width(100).height(100)
      .id('item3')
      .backgroundColor(Color.Green)
      .alignRules({
        right:{anchor:"__container__",align:HorizontalAlign.End},
        bottom:{anchor:"__container__",align:VerticalAlign.Bottom}
      })

      Row(){Text('与子组件偏移')}.width(100).height(100)
      .id('item4')
      .backgroundColor(Color.Orange)
      .alignRules({
        left:{anchor:"item2",align:HorizontalAlign.End},
        bottom:{anchor:"item3",align:VerticalAlign.Top}
      })

      Row(){Text('位置偏移')}.width(100).height(100)
      .id('item5')
      .backgroundColor(Color.Brown)
      .alignRules({
        left:{anchor:"item2",align:HorizontalAlign.End},
        bottom:{anchor:"item3",align:VerticalAlign.Top}
      })
      .offset({//子组件位置偏移
        x:-80,
        y:-40
      })
      Row(){Text('同方向多个对齐')}
      .id('item6')
      .backgroundColor(Color.Pink)
      .alignRules({
        left:{anchor:"item2",align:HorizontalAlign.End},
        right:{anchor:"item3",align:HorizontalAlign.Start},
        // bottom:{anchor:"__container__",align:VerticalAlign.Bottom},
        top:{anchor:"__container__",align:VerticalAlign.Top}
      })
    }


  }
}

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值