如何在渲染前 测量文字需要显示的行数

在轮播控件中,每个文字内容的行数不确定(eg:一个稿子是一行标题,另一个稿子是8行标题,整体高度按8行的高度显示),需要按最好行数的 高度来设置 控件的整体高度。

HarmonyOS
2024-09-23 12:06:35
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可以使用 @ohos.measure 包里的 measureTextSize 函数

示例代码:

import measure from '@ohos.measure'  
  
@Entry  
@Component  
struct Index {  
  @State message: string = '很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段很长很长的一段';  
  
  @State textSize: SizeOptions = { width: 0, height: 0 }  
  
  aboutToAppear(): void {  
    this.textSize = measure.measureTextSize({  
      textContent: this.message,  
      fontSize: 14,  
      constraintWidth: 300  
    })  
    console.log(JSON.stringify(this.textSize))  
  }  
  
  build() {  
    Row() {  
      Swiper() {  
        Row() {  
          Text(this.message)  
            .fontSize(14)  
            .width(300)  
        }  
        .backgroundColor(Color.Yellow)  
        .width(300)  
        .height(px2vp(Number(this.textSize.height)))  
        Row() {  
          Text('一行文本')  
            .fontSize(14)  
            .width(300)  
        }  
        .backgroundColor(Color.Yellow)  
        .width(300)  
        .height(px2vp(Number(this.textSize.height)))  
      }  
  
    }  
    .height('100%')  
  }  
}
分享
微博
QQ
微信
回复
2024-09-23 18:09:18
相关问题
HarmonyOS Text获取文本显示行数
53浏览 • 1回复 待解决
过长文字如何滚动显示
1921浏览 • 1回复 待解决
HarmonyOS如何测量Text组件宽度呢
460浏览 • 1回复 待解决
HarmonyOS 文字显示问题
439浏览 • 1回复 待解决
文字背景颜色渐变显示
2179浏览 • 1回复 待解决
HarmonyOS如何测量文本内容长度?
150浏览 • 0回复 待解决
Text匹配文字高亮显示
846浏览 • 1回复 待解决
如何测量获取控件高宽
820浏览 • 1回复 待解决
基于measure实现文本测量
734浏览 • 1回复 待解决
过长文字如何滚动显示,有人知道吗?
2017浏览 • 1回复 待解决
如何保证振弦传感器测量精度?
3432浏览 • 0回复 待解决