HarmonyOS 鸿蒙Next无法获取手机设备宽高

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next无法获取手机设备宽高

需要组件宽跟根据设备宽度变化,高度比宽度搞30,需要获取设备宽度,但是该api无法获取到数值
import display from ‘@ohos.display’;

function displayWidth ():number {
let displayClass: display.Display = display.getDefaultDisplaySync();
console.log(‘width:’+ displayClass?.width.toString() )
return displayClass?.width
}

@Component
export struct ModuleItemList {
@State dataArr :Array<ModuleModel> = []
@Prop editor ?: boolean = false
@State screenWidth : number = displayWidth();
build() {
Grid(){
ForEach(this.dataArr, (item: ModuleModel) => {
GridItem(){
if (this.editor) {
ModuleItemEditor({moduleModel:item})
}else
ModuleItemBadge({moduleModel:item})

}.onClick(()=>{
item.title = ‘456’+ item.title
}).width(this.screenWidth *0.2).height(this.screenWidth +30)
})
}.rowsGap(10)
}
}


更多关于HarmonyOS 鸿蒙Next无法获取手机设备宽高的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
需要px2vp转换一下,直接使用返回的宽度1260即时除以2也是超过全屏,界面是看不出来的。获取宽度打印一致为0,以及预览也是不显示的。仅运行才能看见效果。

更多关于HarmonyOS 鸿蒙Next无法获取手机设备宽高的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若遇到无法获取手机设备宽高的问题,通常是因为访问设备信息的API使用不当或权限配置有误。以下是一些针对性的解决步骤:

  1. 检查权限配置: 确保应用已在manifest.json文件中声明了获取设备信息的必要权限,如ohos.permission.READ_SETTINGS(若涉及系统设置读取)和ohos.permission.GET_TASKS(若涉及任务管理,尽管获取宽高不常见此权限需求)。

  2. 使用正确的API: 利用HarmonyOS提供的DisplayMetrics类来获取屏幕宽高。示例代码:

    import display from '[@ohos](/user/ohos).multimedia.display';
    let metrics = new display.DisplayMetrics();
    display.getDefaultDisplay().getRealMetrics(metrics);
    let width = metrics.widthPixels;
    let height = metrics.heightPixels;
    
  3. 适配不同设备: 考虑到HarmonyOS可能运行在多种设备上,确保代码能适配不同屏幕尺寸和分辨率。

  4. 调试与日志: 使用鸿蒙系统的日志工具打印相关变量值,检查API调用结果是否符合预期。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。这将确保你获得更专业的技术支持。

回到顶部