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
3天前
浏览
收藏 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
微信
回复
3天前
相关问题
HarmonyOS使用json解析报错
1385浏览 • 2回复 待解决
HarmonyOS 使用Proxy语法报错
570浏览 • 1回复 待解决
HarmonyOS 使用防截图API报错
43浏览 • 1回复 待解决
HarmonyOS 使用命令构建报错
658浏览 • 1回复 待解决
HarmonyOS Web组件使用localStorage报错
652浏览 • 1回复 待解决
HarmonyOS 使用华为ID登录报错
11浏览 • 1回复 待解决
HarmonyOS TaskPool使用首选项报错
479浏览 • 1回复 待解决
使用Ability Kit报错16000001
608浏览 • 1回复 待解决
使用UserAuthenticationKit的userAuthIcon报错
533浏览 • 1回复 待解决
HarmonyOS 使用flutter创建packages时报错
45浏览 • 1回复 待解决
HarmonyOS 使用华为登录API 报错1001500001
541浏览 • 1回复 待解决
使用fetch报错,fetch undefined
7200浏览 • 2回复 待解决
HarmonyOS 使用 createX509Cert 报错 401
47浏览 • 1回复 待解决
HarmonyOS 在依赖library中使用worker报错
362浏览 • 1回复 待解决
使用componentSnapshot.get能力报错
788浏览 • 1回复 待解决
多模块应用使用startAbility报错
1857浏览 • 1回复 待解决
HarmonyOS C++库使用aki库,编译报错
316浏览 • 1回复 待解决
HarmonyOS react-native-svg(CAPI)使用报错
59浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人