HarmonyOS APP开发-鸿蒙6中measure.measureText API将要废弃的适配《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

 HarmonyOS开发者版本6.0.0(API 20)Release(鸿蒙6) 在2025年9月25日正式发布。相对于HarmonyOS 5.0版本增加了多项新能力及对已有能力的优化。同时也有部分API进行了变更。

本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书整体内容的延续,是咱这本书读者的福利,内容以本书的示例作为基础,适配鸿蒙6过程中,所需要完成的调整。并将这些调整记录分享给大家,本篇内容主要介绍measure.measureText API的兼容。

  对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习

​​​

往期福利:

 《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利博文目录,点击查看

背景介绍

measure.measureText接口已在鸿蒙从 API version 18开始废弃,官方建议使用 measureText替代(需通过 UIContext获取)

废弃原因

  • 直接调用 MeasureText.measureText会导致 UI 上下文不明确(如跨组件测量时可能关联错误界面)。
  • 新方案通过 UIContext确保测量与当前组件上下文绑定,避免布局偏差。

 替代方案:使用 UIContext.getMeasureUtils(),通过组件的 getUIContext()获取当前 UI 上下文关联的 MeasureUtils对象:

如下代码所示:

let measureUtils = this.getUIContext().getMeasureUtils();

之后再调用测量方法

  • 测量单行文本宽度 → measureUtils.measureText()
  • 测量带约束的文本宽高 → measureUtils.measureTextSize()

示例代码

// 1. 获取当前UI上下文的测量工具
let measureUtils = this.getUIContext().getMeasureUtils();

// 2. 测量文本尺寸(支持约束参数)
this.textSize = measureUtils.measureTextSize({
  textContent: "俩毛豆多行 Hello HarmonyOS",
  fontSize: '30fp',
  constraintWidth: 200 // 布局约束宽度(单位vp)
});
this.textWidth = measureUtils.measureText({
  textContent: "俩毛豆单行 Hello HarmonyOS",
  fontSize: '30fp',
  constraintWidth: 200 // 布局约束宽度(单位vp)
});

关键注意事项

单位问题

  • 返回值单位为 px(像素),如需转换为 vp 请用 px2vp,但需注意:
  • 转换后长度可能因屏幕密度差异与视觉预期不符。
  • 精准布局推荐直接使用 RelativeContaineralignRules定位(参考方案)。

接口限制

  • measureText()仅返回单行文本宽度(忽略 constraintWidth/maxLines参数)。
  • 需多行测量或高度计算时必须用 measureTextSize()。。

  对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习

    ​​

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    俩毛豆

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值