我有2个SpannableStringBuilders,sbDest和sbSrc。
我想将sbSrc插入sbDest:
sbDest.insert(0,sbSrc)
可行-并且sbDest以插入之前的跨度加上sbSrc中存在的跨度结束。
但是,如果sbSrc包含sbDest中已经存在的类型的跨度,则不会插入该跨度。
原因似乎是SpannableStringBuilder.java中此注释下的代码:
//仅当此对象尚未用作跨度时才添加跨度 字符串
任何人都知道为什么这种行为,以及是否有解决方法?
谢谢
答案 0 :(得分:0)
回答了我自己的问题...
我首先使用
从sbDest获取sbSrc(以实现复制/粘贴功能)。SpannableStringBuilder ssbSrc =新的SpannableStringBuilder(ssbDest.subSequence(开始,结束));
subSequence()确实复制了跨度,但没有克隆它们,因此ssbSrc的结束时间与ssbDest中的跨度相同(对象实例,而不仅仅是相同的类型)...这就是为什么sbDest .insert()不会插入它们。