HarmonyOS鸿蒙Next中属性字符串怎么配置自适应字号

HarmonyOS鸿蒙Next中属性字符串怎么配置自适应字号

Text-文本与输入-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

Text下面挂载Span,minFontSize能生效吗?

3 回复

试了一下minFontSize不生效,hap包编出来是API 17的

@Entry
@Component
struct demo {
  build() {
    Column() {
      Text('hello word') {
        ImageSpan($r('app.media.startIcon')).height(44)
        ImageSpan($r('app.media.startIcon')).height(44)
        Span('这是一段文字').fontColor(Color.Red)
        Span('测试文本最大行数').fontColor(Color.Yellow)
        Span('通过maxLines和textOverflow控制行数和截断').fontColor(Color.Blue)
      }
      .width(300)
      .height(140)
      .borderWidth(1)
      .maxLines(2)
      .minFontSize(1)
      .maxFontSize(20)
      .heightAdaptivePolicy(TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST)

      Blank().height(20)

      Text('hello word')
        .fontSize(1)
        .width(300)
        .borderWidth(2)
        .borderColor(Color.Red)
    }
  }
}

瞄了一眼docs仓的文档,后续应该会支持。

更多关于HarmonyOS鸿蒙Next中属性字符串怎么配置自适应字号的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,属性字符串的自适应字号可以通过Text组件的fontSize属性结合ResourceManager实现。使用ResourceManager获取设备屏幕密度,动态调整字号。例如,fontSize: $r('app.float.font_size'),其中font_size在资源文件中定义不同屏幕密度的值。通过这种方式,字号会根据设备屏幕密度自动调整,实现自适应效果。

在HarmonyOS Next中,Span组件确实支持minFontSize属性用于自适应字号调整。当Text组件启用自适应布局(autoFontSize)时,其子Span组件也会遵循相同的字号调整规则,minFontSize会生效并确保文字不会小于指定最小值。

关键配置要点:

  1. Text组件需设置autoFontSize=true
  2. SpanminFontSize建议设置为12-14px以保证可读性
  3. 系统会根据容器尺寸和内容自动在min/max范围内调整字号

示例代码:

Text() {
  Span('自适应文本')
    .minFontSize(12)
    .maxFontSize(24)
}
.autoFontSize(true)
.width('80%')

注意:Span的字体设置优先级高于Text,若同时设置会以Span的配置为准。

回到顶部