鸿蒙中Text中子组件Span如何设置间距?

90 阅读1分钟

HarmonyOS Text组件Span间距解决方案

一、问题分析

在HarmonyOS开发中,Text组件内的Span子组件无法直接设置margin/padding属性,需要通过文本级属性实现间距控制。经过验证,使用letterSpacing结合特殊占位符的方案是当前最优解。

二、技术方案

1. 核心API

letterSpacing

  • 作用:设置同一Span内字符间距
  • 单位:vp(虚拟像素)
  • 特性:支持正负值(正值扩大间距,负值缩小间距)

image.png

demo如下

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text() {
        Span('我们这的憋佬仔')
          .fontSize('20fp')
          .textBackgroundStyle({color: Color.Green, radius: "5vp"})
          .fontColor(Color.White)
        // 间距控制 letterSpacing
        Span(' ').letterSpacing(10)
        Span('来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财来财')
          .fontSize('20fp')
      }.maxLines(2).textOverflow({ overflow: TextOverflow.Ellipsis }).width('80%')
    }.width('100%').alignItems(HorizontalAlign.Center)
  }
}

2. 实现原理

通过插入空格字符Span或者使用\u200B替代普通空格,并设置letterSpacing,实现Span间的间距控制: 可以看到关键代码中,我在需要加间距的地方加了一个span空字段并且给上了letterSpacing,这样就可以实现span间距啦