HarmonyOS 如何在自定义@Component中获取屏幕的宽高?

如标题所述,在自定义组件中如何获取屏幕的宽高数值。

HarmonyOS
2024-10-22 11:26:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

方法一:

获取屏幕宽度高度。

x = display.getDefaultDisplaySync().width;  
y = display.getDefaultDisplaySync().height;  
//x,y方向中每英寸屏幕的确切物理像素值。  
xDpi = display.getDefaultDisplaySync().xDPI;  
yDpi = display.getDefaultDisplaySync().yDPI;

用x/xDpi,y/yDpi可以计算出屏幕宽度高度,但是此种方法计算出来的屏幕宽高是不包含屏幕的黑边的。

方法二:使用getInspectorByKey对指定的id组件的所有属性,参考如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-component-id-V5#getinspectorbykey9

@Component  
export default struct Test {  
  @State myWidth: number = 0;  
  @State myHeight: number = 0;  
  build() {  
    Column(){  
      Text(`宽度:${this.myWidth},高度:${this.myHeight}`)  
      Button('获取Test的宽高').onClick(()=>{  
        const myTest = JSON.parse(getInspectorByKey("myTest"))  
       this.myHeight = myTest.$attrs.height;  
        this.myWidth = myTest.$attrs.width;  
      })  
    }  
    .width('100%')  
  }  
}  
@Entry  
@Component  
struct HeightPage {  
  @State message: string = 'Hello World';  
  
  build() {  
    Row() {  
      Column() {  
        Text(this.message)  
          .fontSize(50)  
          .fontWeight(FontWeight.Bold)  
        Test()  
          .width(150)  
          .height(100)  
          .id('myTest')  
      }  
      .width('100%')  
    }  
    .height('100%')  
  }  
}
分享
微博
QQ
微信
回复
2024-10-22 18:20:13
相关问题
java如何获取屏幕。找不到api?
5430浏览 • 1回复 待解决
如何获取组件和在屏幕位置
2976浏览 • 2回复 待解决
如何获取屏幕,你知道吗?
2378浏览 • 1回复 待解决
屏幕如何获取 ,求解决方法
1579浏览 • 1回复 待解决
如何自定义Component 属性
14881浏览 • 3回复 待解决
如何在BuildProfile自定义参数?
167浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
2142浏览 • 1回复 待解决
ArkTs如何获取组件
4516浏览 • 1回复 待解决
如何获取窗口信息
2290浏览 • 1回复 待解决
HarmonyOS如何获取指定子组件
1087浏览 • 1回复 待解决
如何在js文件引入自定义js文件
7663浏览 • 1回复 待解决