鸿蒙RelativeContainer中子Text不显示及相关注意

鸿蒙RelativeContainer中子Text不显示及相关注意

最近学习鸿蒙时使用RelativeContainer,这个控件和Android的ConstraintLayout还是有一定差距的,下面讲一下注意事项。

1.一定要设置ID!一定要设置ID!一定要设置ID!
2.RelativeContainer一定要设置高度,否则子控件可能不显示,或者显示不全。
3.一定要设置锚点
.alignRules({
top: { anchor: ColorConstant.PARENT, align: VerticalAlign.Top }
})

下面看一下案例:

RelativeContainer() {
          Text(`限量${this.homeEntity.limited}份`)
            .width($r('app.float.size_101'))
            .height($r('app.float.size_28'))
            .fontColor(Color.White)
            .backgroundColor(ColorConstant.MAIN_COLOR)
            .borderRadius($r('app.float.size_20'))
            .textAlign(TextAlign.Center)
            .fontSize($r('app.float.size_text_13'))
            .id("numTv")
            .alignRules({
              middle: { anchor: ColorConstant.PARENT, align: HorizontalAlign.Center }
            })

          Image($r('app.media.tip_icon_back'))
            .width($r('app.float.size_19'))
            .height($r('app.float.size_23'))
            .margin({ left: $r('app.float.size_15') })
            .overlay('Fill', { align: Alignment.Bottom, offset: { x: 0, y: 20 } })
            .id("tipIv")
            .alignRules({
              left: { anchor: "numTv", align: HorizontalAlign.End },
              center: { anchor: "numTv", align: VerticalAlign.Center }
            })
            .onClick(() => {
              this.setDateMethod()
            })
        }.width('100%').height($r('app.float.size_40')).margin({ top: $r('app.float.size_15') })

这里原先我RelativeContainer是没有设置高度的,Text显示样式,但是不显示字体,只有设置了高度才能正常显示高度。

4.RelativeContainer内子组件“A”设置magin-top,另一个子组件“B”以“A”为锚点时,样式不符合预期。
解决办法:假如设置了margin-top:20,同时设置magin-bottom:20即可。

案例如下:

 RelativeContainer() {
    

        Image($r('app.media.user_back'))
          .width($r('app.float.size_62'))
          .height($r('app.float.size_62'))
          .id('iv')
          .alignRules({
            top: { anchor: ColorConstant.PARENT, align: VerticalAlign.Top },
            left: { anchor: ColorConstant.PARENT, align: HorizontalAlign.Start }
          })
          .margin({
            top: $r('app.float.size_70'),//原本我只设置了top和left
            left: $r('app.float.size_20'),
            bottom: $r('app.float.size_70'),
            right: $r('app.float.size_20')
          })

        Text("登录")
          .width($r('app.float.size_52'))
          .height($r('app.float.size_20'))
          .backgroundColor($r('app.color.doing_green'))
          .textAlign(TextAlign.Center)
          .fontSize($r('app.float.size_text_8'))
          .fontColor(Color.White)
          .id('loginTv')
          .alignRules({
            top: { anchor: 'iv', align: VerticalAlign.Center },
            middle: { anchor: 'iv', align: HorizontalAlign.Center }
          })
      }.width('100%').height($r('app.float.size_174'))```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值