Android 如果目标中已存在该类型的span,则SpannableStringBuilder.insert()不会插入span
我有两个Spannabestringbuilders,sbDest和sbSrc 我想将sbSrc插入sbDest: sbDest.insert(0,sbSrc) 这就行了——sbDest最终得到了插入之前的跨度加上sbSrc中存在的跨度 但是,如果sbSrc包含sbDest中已存在的类型的范围,则不会插入该范围 原因似乎是SpannableStringBuilder.java中此注释下的代码: //仅当此对象尚未用作此对象中的跨距时,才添加跨距 串 有人知道这种行为的原因,以及是否有解决办法吗Android 如果目标中已存在该类型的span,则SpannableStringBuilder.insert()不会插入span,android,android-edittext,spannablestringbuilder,Android,Android Edittext,Spannablestringbuilder,我有两个Spannabestringbuilders,sbDest和sbSrc 我想将sbSrc插入sbDest: sbDest.insert(0,sbSrc) 这就行了——sbDest最终得到了插入之前的跨度加上sbSrc中存在的跨度 但是,如果sbSrc包含sbDest中已存在的类型的范围,则不会插入该范围 原因似乎是SpannableStringBuilder.java中此注释下的代码: //仅当此对象尚未用作此对象中的跨距时,才添加跨距 串 有人知道这种行为的原因,以及是否有解决办法吗
谢谢你回答了我自己的问题 首先,我使用从sbDest获取sbSrc(以实现复制/粘贴功能) SpannableStringBuilder ssbSrc=新的SpannableStringBuilder(ssbDest.子序列(开始、结束)) subSequence()确实复制了跨距,但没有克隆跨距,因此ssbSrc的跨距与ssbDest中的跨距相同(相同的对象实例,而不仅仅是相同的类型),这就是为什么sbDest.insert()不插入跨距的原因