HarmonyOS 鸿蒙Next MeasureText.measureText 计算文字宽度问题
HarmonyOS 鸿蒙Next MeasureText.measureText 计算文字宽度问题
我有一个需求,是要设置Text的宽度最大是多少,写了一个函数,传最大字数,然后返回width。大致代码如下:
private getMaxWidth(maxNumber: number, fontSize: number | Resource ): number {
let str :string = ‘’
for (let index = 0; index < maxNumber; index++) {
str += ‘字’
}
let textWidth = MeasureText.measureText({
textContent:str,
fontSize: fontSize,
maxLines:1,
});
return textWidth
}
现在遇到个问题,MeasureText.measureText这个返回的值不准确?,
上面这个maxNumber如果传5的话,计算结果是244(我看API说返回的是px), 直接用的话会比实际长很多(大概能显示9个字左右的宽度),要是用px2vp(textWidth) ,转换的话结果是75vp,使用这个值的话又比实际的小(只能显示3个字)
我的Text代码:
Text(str)
.width(this.getMaxWidth(5, '15fp))
不知道我该怎么获取一个精准的字符宽度数据?
6 回复
是不是得 px 转 vp?
不准的,我现在都用 下面两种方法实现类似的需求。
.constraintSize({ minWidth: '50%', maxWidth: '100%' }) //设置最小最大宽度
或者
onAreaChange() //监听当前文本宽高
有没有可能是因为你没设置字体大小才导致算的有问题