HarmonyOS 使用MutableStyledString setStyle报错

使用MutableStyledString append文本 然后给指定的start - end之间插入特殊customspan 报错 Error: Input span type check failed.@122472bf

let styleString = new MutableStyledString("")
styleString.appendStyledString(new StyledString("第一个段落" + "\r\n"))
try {
  styleString.setStyle({
    styledKey: StyledStringKey.CUSTOM_SPAN,
    styledValue: new QDParagraphSpan(),
    start: start,
    length: end - start
  })
} catch (e) {
  readLogError(e)
}

export class QDParagraphSpan extends CustomSpan {
  onMeasure(measureInfo: CustomSpanMeasureInfo): CustomSpanMetrics {
    return { width: 0, height: 0 }
  }

  onDraw(context: DrawContext, drawInfo: CustomSpanDrawInfo): void {
  }
}
HarmonyOS
2024-12-24 17:13:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

创建CustomSpan只接受 new MutableStyledString(new CustomSpan()) 如果需要使用setStyle来设置 只允许在本身就是CustomSpan上替换CustomSpan。

new MutableStyledString(new CustomSpan())的length只能是1。

考虑要在CustomSpan中存储数据,这样写看下:

export class QDParagraphSpan extends CustomSpan {
  x:number = 0;
  y:number = 0;
  type:string = "";
  data:string = "";

  constructor(inputX:number, inputY:number, inputType:string, inputData:string) {
    super();
    this.x = inputX;
    this.y = inputY;
    this.type = inputType;
    this.data = inputData;
  }
  onMeasure(measureInfo: CustomSpanMeasureInfo): CustomSpanMetrics {
    return { width: 0, height: 0 }
  }

  onDraw(context: DrawContext, drawInfo: CustomSpanDrawInfo): void {
  }
}

let styleString = new MutableStyledString("Hello World")
styleString.appendStyledString(
  new MutableStyledString(
    new QDParagraphSpan(100, 200, "qipao", "999+")
  )
)

customspan可以理解为一个文字字符占位,自绘制的,不能跨多个,长度都是1

分享
微博
QQ
微信
回复
2024-12-24 19:37:54
相关问题
HarmonyOS 使用云存储接口报错报错
105浏览 • 1回复 待解决
HarmonyOS 使用Proxy语法报错
810浏览 • 1回复 待解决
HarmonyOS使用json解析报错
1737浏览 • 2回复 待解决
HarmonyOS 使用防截图API报错
162浏览 • 1回复 待解决
HarmonyOS 使用命令构建报错
971浏览 • 1回复 待解决
HarmonyOS Web组件使用localStorage报错
1029浏览 • 1回复 待解决
HarmonyOS 使用华为ID登录报错
330浏览 • 1回复 待解决
HarmonyOS 使用华为登录API 报错1001500001
822浏览 • 1回复 待解决
HarmonyOS 使用flutter创建packages时报错
315浏览 • 1回复 待解决
HarmonyOS TaskPool使用首选项报错
707浏览 • 1回复 待解决
HarmonyOS 使用发布证书运行报错9568322
309浏览 • 1回复 待解决
使用fetch报错,fetch undefined
7502浏览 • 2回复 待解决
使用UserAuthenticationKit的userAuthIcon报错
714浏览 • 1回复 待解决
使用Ability Kit报错16000001
873浏览 • 1回复 待解决
HarmonyOS 使用 createX509Cert 报错 401
111浏览 • 1回复 待解决
HarmonyOS 使用了@Sendable注解的类报错
366浏览 • 1回复 待解决
HarmonyOS 元服务中使用axios报错2300028
102浏览 • 1回复 待解决
HarmonyOS 在依赖library中使用worker报错
618浏览 • 1回复 待解决
多模块应用使用startAbility报错
1980浏览 • 1回复 待解决
使用componentSnapshot.get能力报错
980浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人