HarmonyOS 鸿蒙Next Text的content值为空串的时候 Text的height值为0?

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

HarmonyOS 鸿蒙Next Text的content值为空串的时候 Text的height值为0?

Text 的content值为空串的时候 Text 的height值为0?

为什么这么设计呢?导致Text无法占位了,View可见不可见不是由visibility控制的吗?

如果我得处理,还得写死一个不为空的字符串给content,在通过visibility设置Hidden;

这个算不算bug?


更多关于HarmonyOS 鸿蒙Next Text的content值为空串的时候 Text的height值为0?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复
 Text('') 这样的情况下就不会有占位

更多关于HarmonyOS 鸿蒙Next Text的content值为空串的时候 Text的height值为0?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以看下1楼的回复,测试了下可以占位:

    Column() {
      Text("123")
      Text('').height(50).width(100).visibility(Visibility.Visible)
      Text("123")
    }
	
深色代码主题
复制
[@Entry](/user/Entry)
[@ComponentV2](/user/ComponentV2)
struct Index {
  [@Local](/user/Local) text: string = '\u200C'

build() { Column() { Text(this.text) }.backgroundColor(Color.Blue) .width(10) } }

给个零宽字符,高度就填充了。 只是没宽度,显示不出来。就用Column展示了一下,Column没设置height.但是高度也被填充了。

给零宽字符,这个有点鸡肋,有点感觉多此一举。 如果只是占位,实现的方式有很多,但是text没有content就将高度设置为0就有点坑了,因为一般如果请求没有拿到数据的时候,content没有默认值的时候,一般的写法都是设置为空串的,这个才是前端后端通用的吧。 比如如果content的值后面需要传给后端,但是没有值,这个时候后端认为是空串表示没有值还是零宽字符表示没有值呢? 就这种不通用的东西,有点难搞,哎。

零宽确实是鸡肋。 没有文字没高度,在我认知里还算正常。像安卓 或者 flutter之类的,都是需要测量,才能给出宽高。没有东西测量。。。就没高度。。。

可通过设置Text组件的属性visibility进行占位

深色代码主题
复制
Text('').height(50).width(100).visibility(Visibility.Visible)

在HarmonyOS中,当Next Text组件的content值为空串时,Text组件的height值确实可能会被计算为0。这是因为UI布局系统会根据实际内容进行尺寸计算,空内容通常不会导致组件占据实际的显示空间。

HarmonyOS的UI框架遵循一定的布局和渲染规则,当文本内容为空时,组件的默认行为是不占用高度。这种行为在多数UI框架中是一致的,旨在优化界面布局和渲染性能。

如果你需要在content为空串时仍然保持Text组件的高度,可以通过以下几种方式实现:

  1. 设置最小高度:在Text组件的样式中,设置minHeight属性,确保即使内容为空,组件也保持一定的高度。

  2. 使用占位符:如果适用,可以在content中插入一个不可见的占位符字符(如空格),以触发组件的高度计算。

  3. 容器控制:将Text组件放在一个具有固定高度或最小高度的容器中,通过容器来间接控制Text组件的高度。

请注意,这些方法可能会影响界面的其他布局和渲染效果,使用时需根据实际情况进行选择。

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

回到顶部