HarmonyOS 鸿蒙Next Text文本不垂直居中

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Text文本不垂直居中

问题描述:

Text文本不垂直居中。

3 回复

解决方案:

Text组件不用设置lineHeight属性,默认就是居中的。绘制文本是从底部开始绘制的,设置合适的lineHeight可以让文本有居中效果,但如果lineHeight设置的过高,文本就会显得偏下一些,一般lineHeight属性用来联合padding属性调整Text内的上下行间距。目前可以通过如下几个方案实现垂直居中。

1.不设置lineHeight,默认文本在文本框就是居中的;

2.设置合适的lineHeight,使Text看起来居中;

3.设置不合适的lineHeight,配合padding,让Text居中;

4.设置不合适的lineHeight,不使用padding,这种需要在module.json5的module下添加以下配置:“metadata”: [{“name”: “half_leading”,“value”: “true”,}],值得注意的是,该方法谨慎使用,因为是对当前hap整体生效的,可能会影响其他的已经开发好的Text显示。例如如果其他Text使用lineHeight和padding已经调整了居中,但是又设置了这个属性,会导致原来已经居中的不再居中。

@Entry 
@Component 
struct TextSpanPage { 
  build() { 
    Column() { 
      Row() { 
        Text("你好啊".split('').join('\u200B')) 
          .fontSize(15) 
          .fontColor(Color.Black) 
          .textOverflow({ 
            overflow: TextOverflow.Ellipsis 
          }) 
          .borderWidth(1) 
          .lineHeight(22) 
          .maxLines(1) 
          .constraintSize({ 
            maxWidth: 80 
          }) 
          .margin({ 
            right: 10 
          }) 
 
        /* 
        TODO 需要在module.json5中配置half_leading为TRUE,则这种也是垂直居中的 
        该方法谨慎使用,因为是对当前hap整体生效的,可能会影响其他的已经开发好的Text显示。 
        例如如果其他Text使用lineHeight和padding已经调整了居中,但是又设置了这个属性,会导致原来已经居中的不再居中。 
        */ 
        Text("你好啊".split('').join('\u200B')) 
          .fontSize(15) 
          .fontColor(Color.Black) 
          .textOverflow({ 
            overflow: TextOverflow.Ellipsis 
          }) 
          .borderWidth(1) 
          .lineHeight(60) 
          .maxLines(1) 
          .margin({ 
            right: 10 
          }) 
 
        Text("默认文字在文本框就是垂直居中".split('').join('\u200B')) 
          .fontSize(15) 
          .fontColor(Color.Black) 
          .textOverflow({ 
            overflow: TextOverflow.Ellipsis 
          }) 
          .borderWidth(1) 
          .maxLines(1) 
      } 
      .alignItems(VerticalAlign.Center) 
      .backgroundColor(Color.Blue) 
 
      Row() { 
        Text("设置lineHeight过高,通过padding调整".split('').join('\u200B')) 
          .fontSize(15) 
          .fontColor(Color.Black) 
          .textOverflow({ 
            overflow: TextOverflow.Ellipsis 
          }) 
          .lineHeight(60) 
          .borderWidth(1) 
          .maxLines(1) 
          .padding({ bottom: 22.5 }) 
      }.alignItems(VerticalAlign.Center) 
      .backgroundColor(Color.Yellow) 
    }.width("100%").height("100%") 
  } 
}

如果设置的文本的行高是适中,为啥显示还不是居中?

如:

Text('更多')
.fontSize(16)
.lineHeight(24)

在HarmonyOS鸿蒙系统中,遇到Next Text文本不垂直居中的问题,通常可能是由于文本组件的样式设置不当或布局参数配置有误所导致。以下是一些可能的原因及解决方法,供您参考:

  1. 检查文本组件的垂直对齐属性:确保文本组件的verticalAlignment属性设置为center,这是实现垂直居中的关键。

  2. 调整父容器的布局:如果文本组件嵌套在父容器中,确保父容器的布局方式(如Flexbox、Grid等)支持子元素的垂直居中,并检查相关属性设置是否正确。

  3. 检查文本内容:有时候,文本内容本身(如特殊字符、换行符等)可能会影响垂直居中效果,尝试简化文本内容以排除干扰。

  4. 更新系统或组件库:确保您的HarmonyOS系统以及使用的UI组件库是最新版本,因为旧版本可能存在已知的bug或不支持某些特性。

  5. 代码审查:仔细检查相关代码,确保没有其他样式或逻辑错误影响到文本的垂直居中。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部