HarmonyOS TextOverflow能否新增一个 middle?

现在只有TextOverflow.Ellipsis和TextOverflow.MARQUEE 满足不了要求啊.

能否加一个 TextOverflow.MIDDLE 啊?

android:ellipsize = "end"    //省略号在结尾
android:ellipsize = "start"   //省略号在开头
android:ellipsize = "middle"       //省略号在中间
android:ellipsize = "marquee"     // 跑马灯

比如回复:

"你在动态《嘻嘻嘻嘻嘻嘻嘻休息休息》中的评论"

超出文本范围就变成这样

"你在动态《嘻嘻嘻...息休息》中的评论"

阅读 507
1 个回答

请参考以下代码:

@Entry
@Component
struct TextExample4 {
  @State text: string =
    '你在动态《嘻嘻嘻嘻嘻嘻嘻休息休息》中的评论'
  @State ellipsisModeIndex: number = 0;
  @State ellipsisMode: EllipsisMode[] = [EllipsisMode.START, EllipsisMode.CENTER, EllipsisMode.END]
  @State ellipsisModeStr: string[] = ['START', 'CENTER', 'END']
  @State wordBreakIndex: number = 0;
  @State wordBreak: WordBreak[] = [WordBreak.NORMAL, WordBreak.BREAK_ALL, WordBreak.BREAK_WORD]
  @State wordBreakStr: string[] = ['NORMAL', 'BREAK_ALL', 'BREAK_WORD']
  @State textClip: boolean = false

  build() {
    Column({ space: 10 }) {
      Text(this.text)
        .fontSize(16)
        .border({ width: 1 })
        .lineHeight(20)
        .maxLines(1)
        .textOverflow({ overflow: TextOverflow.Ellipsis })
        .ellipsisMode(this.ellipsisMode[this.ellipsisModeIndex])
        .width(300)
        .margin({ left: 20, top: 20 })

      Row() {
        Button('更改省略号位置:' + this.ellipsisModeStr[this.ellipsisModeIndex]).onClick(() => {
          this.ellipsisModeIndex++
          if (this.ellipsisModeIndex > (this.ellipsisModeStr.length - 1)) {
            this.ellipsisModeIndex = 0
          }
        })
      }
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进