HarmonyOS 鸿蒙Next RichEditor 插入类似网页hr标签样式的“分割线”功能后无法获取offset/index的解决方案
HarmonyOS 鸿蒙Next RichEditor 插入类似网页hr标签样式的“分割线”功能后无法获取offset/index的解决方案
我现在实现的方案:
```typescript
[@Builder](/user/Builder)
gapLineBuilder() {
Column() {
Divider().strokeWidth('1lpx').color(Color.Gray)
.width('100%')
}
.width('100%')
.justifyContent(FlexAlign.Center)
.height(this.fontSize)
}
/**
* 插入分割线
*/
insertGapLine() {
let start = this.controller.getSelection().selection[0]
let end = this.controller.getSelection().selection[1]
let customBuilder: CustomBuilder = () => this.gapLineBuilder()
this.controller.addBuilderSpan(customBuilder, {
offset: start
})
}
因为插入之后还需要持久化,所以需要记录下来所有样式的start和end。
但是通过getSpans是拿不到addBuilderSpan的内容的,如何拿到输入框中所有的分割线的下标(index/offset),成了一个问题,大家有没有好办法~
更多关于HarmonyOS 鸿蒙Next RichEditor 插入类似网页hr标签样式的“分割线”功能后无法获取offset/index的解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
由于当前接口规格不支持获取builder信息
推荐方案:
- 提诉求,富文本增加分割线功能
- 应用内部自己维护builder的索引范围,通过监听文本变化回调,自己更新索引位置。
若提述求,可按照如下模板提供相关信息:
【原始场景】要做一个什么业务功能,业务场景是什么样的,体验是什么样的,遇到了什么困难?
【影响】当前的困难影响是什么,阻塞?体验不好?UX不好?性能不好…是否有规避方案?
【业界对标】安卓怎么实现的,IOS怎么实现的?
更多关于HarmonyOS 鸿蒙Next RichEditor 插入类似网页hr标签样式的“分割线”功能后无法获取offset/index的解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
想想都有点复杂,要处理所有插入,删除,粘贴等操作之后,操作的内容再和所有Spans的start和end做对比,再计算,感觉很麻烦,
在HarmonyOS鸿蒙系统中,Next RichEditor组件在插入类似网页<hr>
标签样式的“分割线”功能后,可能会遇到无法正确获取该元素offset或index的问题。这通常是由于RichEditor内部对特殊元素的处理机制导致的。
针对此问题,一个可行的解决方案是通过自定义元素或特殊标记来处理分割线,并在插入时记录其位置。具体步骤如下:
-
自定义分割线元素:创建一个自定义的分割线元素,例如一个带有特定样式的
Span
或Div
,而不是直接使用RichEditor的内置功能插入。 -
记录位置信息:在插入自定义分割线元素时,记录其位置信息(如index或相对于某个节点的offset)。这可以通过在插入操作前后获取文本内容长度差或利用RichEditor提供的事件机制来实现。
-
获取位置信息:在需要获取分割线位置时,根据之前记录的位置信息进行计算。注意考虑文本编辑过程中可能发生的变动,如插入、删除文本等。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html