【HarmonyOS】如何获取屏幕宽高&父容器的宽高

【关键字】

HarmonyOS、屏幕宽高、父容器宽高、组件通用信息、组件标识

1、写在前面

在鸿蒙应用开发的过程中,需要用到屏幕的宽高,那么我们该如何获取手机屏幕的宽度和高度呢?另外,某个组件的父容器的宽高我们能不能获取到呢?带着这些问题,通过查找相关资料,结合实际的代码进行测试,顺利的获取到了屏幕宽高和父组件的宽高,下面一起来看一下具体该如何实现吧。

2、解决方案

首先是获取屏幕宽高,它的实现较为简单,直接上代码:

aboutToAppear(){
    // let displayClass = null;
    try {
      // displayClass = display.getDefaultDisplaySync()
      console.info('------>width:'+display.getDefaultDisplaySync().width)
      // console.info('------>width:'+displayClass.width)
      // console.info('------>height:'+displayClass.height)
      console.info('------>height:'+display.getDefaultDisplaySync().height)
    } catch (exception) {
      console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception))
    }
  }

运行代码,发现日志中确实打印出了屏幕宽高的结果:

cke_954.png

那父容器的宽高又该如何获取呢?直接获取好像并没有相关的属性或者方法可以获取到,通过查找API文档,发现可以通过间接的手段来获取父组件的宽高,来具体看一下代码是如何写的:

build() {
    Column() {
      Column() {
        Text('我是文本').width(200).height(50).onAppear(()=>{
          let jsonStr = getInspectorByKey('111')
          let data = JSON.parse(jsonStr)
          let attr = data.$attrs
          let size = attr.size
          console.info('------>parent:'+size.width+'---'+size.height)
        })
      }.id('111').width(300).height(300)
    }.width('100%').height('100%')
  }

这里首先是给Text这个文本组件的父容器Column组件设置一个id,然后在Text组件加载的回调里面,通过getInspectorByKey(id)这个方法,然后入参传入某个组件的id,这样就可以获取到对应组件的所有属性,然后将返回的JSON格式的字符串转成对象,再通过解析size属性就可以获取到对应组件的宽高啦:

cke_3396.png

OK,通过上面的方法,我们就可以获取父组件的宽高。

完整代码如下:

cke_7479.png

3、参考文档

屏幕宽高:

文档中心:屏幕宽高

父组件宽高:

文档中心:父组件宽高

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值