HarmonyOS 鸿蒙Next Text内部Span的宽度设置无效,Tabs的点击事件onTabBarClick无效

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

HarmonyOS 鸿蒙Next Text内部Span的宽度设置无效,Tabs的点击事件onTabBarClick无效

Text内部Span的width属性设置后无效,目前只能通过加空格扩大长度

2 回复

Span组件支持属性:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-span-V5#属性

  span作为Text、ContainerSpan组件的子组件,仅支持文本通用属性,另外可以继承父组件Text的属性,支持继承的属性仅包括:fontColor、fontSize、fontStyle、fontWeight、decoration、letterSpacing、textCase、fontfamily、textShadow

可以使用富文本组件,解析并显示HTML格式文本,代码如下:

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) data: string =
   '<span style="font-size:30px;margin-right:20px">这是一段文字这是一段文字这是一段文字这是一段文字这是一段文一段文字这是一段文一段文字这是段文一段文字这是段文一段文字这是段文一段文字这是段文一段文字这是段文字这是一段文字</span>'+
     '<span style="display:inline-block;border:1px solid red;font-size:40px;padding:10px">标签</span>';

 build() {
   Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center,
     justifyContent: FlexAlign.Center }) {
     RichText(this.data)
       .onStart(() => {
         console.info('RichText onStart');
       })
       .onComplete(() => {
         console.info('RichText onComplete');
       })
       .width(500)
       .height(500)
       .backgroundColor(0XBDDB69)

   }
 }


 可以参考以下两种实现方式,您看是否满足您的需求:

 方案一:

 build() {
   Column() {
     Text() {
       Span(' 新品 ')
         .fontSize('20fp')
         .textBackgroundStyle({color: Color.Green, radius: "5vp"})
         .fontColor(Color.White)
       // 间距控制 kerning
       Span(' ').letterSpacing(10)
       Span('距离春节仅有一个月了,红红火火的礼品尽快备起来距离春节仅有一个月了,红红火火的礼品尽快备起来距离春节仅有一个月了')
         .fontSize('20fp')
     }.maxLines(2).textOverflow({ overflow: TextOverflow.Ellipsis }).width('80%')
   }.width('100%').alignItems(HorizontalAlign.Center)
 }


 //方案二:
 [@Builder](/user/Builder) OverlayNode() {
   Row() {
     Text('享').fontSize(20).fontColor(Color.Red)
   }
   .width(20)
   .margin({top:2, bottom:2, left:4, right:4})
 }

 build() {
   Column() {
     Row() {
       Text() {
         Span('7天无理由退货').fontSize(20).fontColor(Color.Red)
       }
       .overlay(this.OverlayNode()) // 在overlay层绘制标签
       .textIndent(36) // OverlayNode 宽度
       .width(180) // 设置整体宽度
       .height(32) // 设置整体高度
     }
     .border({width: 2, color: Color.Pink})
   }
   .width('100%')
   .height('100%')
   .justifyContent(FlexAlign.Center)
 }

在HarmonyOS鸿蒙系统中,遇到Next Text内部Span的宽度设置无效以及Tabs的点击事件onTabBarClick无效的问题,通常可能与以下几个因素有关:

  1. Span宽度设置无效

    • 确保你在设置Span宽度时,遵循了鸿蒙系统的布局和测量机制。鸿蒙系统的UI组件宽度可能受父容器约束,检查父容器的布局参数是否允许子组件自定义宽度。
    • 验证Span的样式属性是否被其他样式覆盖,尤其是宽度属性。
  2. Tabs点击事件无效

    • 确认onTabBarClick方法已在Tabs组件中正确注册,并且方法签名与文档或API要求一致。
    • 检查事件监听器是否因权限或生命周期问题被意外移除或未正确初始化。
    • 验证点击区域是否在可视和可操作范围内,有时UI布局或遮挡物可能阻止事件触发。

如果以上检查无误但问题依旧存在,可能是由于系统或特定版本的已知问题。此时,建议直接查阅最新的鸿蒙系统开发者文档或更新到最新的SDK版本。若问题仍未解决,请联系官网客服获取进一步的技术支持。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部