HarmonyOS 如何获取某一行文本中的最后几个文字?

现在需要做文本超过xxx行之后,显示“更多”按钮的功能,当前场景比较复杂,文本中可能包含表情、图片和文字。例如如果当前文字总共1000个文字,但是只想展示三行,超过三行的以...结束并在第三行末尾添加“更多”按钮,其中每一行都可能会展示图片或者表情,那么这种情况下,如何计算我这1000个文本该从哪里截断呢

阅读 503
1 个回答

请参考如下代码规避

@Entry
@Component
struct Index {

  maxLines: string = "这是第一行的很长惆怅长岑长错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错长长长长惆怅长岑长错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错错惆怅长岑长错错错错错错错错错错的文字\n" +
    "\n" +
    "  第二段测试测试测试测试测试测试测试测试测试测试测试书测试测试测试测试测试测试文字\n" +
    "\n" +
    "  第三段测试测试测试测试测试吃吃睡睡测试测试测试测试测试测试测试测试测试\n" +
    "\n" +
    "  “第四段测试赛测试文字"
  @State message: string = 'Hello World';

  @State flag: boolean = true
  build() {
    Row() {
      Column() {
        Button('OK')
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.flag = true
          })

        if (this.flag) {
          Stack({ alignContent: Alignment.BottomEnd }) {
            Text(this.maxLines)
              .fontSize(15)
              .fontColor(Color.Black)
              .baselineOffset(10)
              .maxLines(3)

            Column() {
              Text('...展开')
                .fontSize(16)
                .id('row2')
                .backgroundColor(Color.White)
              Column() {

              }.height(7)
            }.onClick(() => this.flag = false)
          }
        } else {
          Text(this.maxLines)
            .fontSize(15)
            .fontColor(Color.Black)
            .baselineOffset(10)
        }
      }
      .width('100%')
    }
    .height('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进