Android 如何克隆ImageSpan
如何克隆imagespan 我想将setspan()与一个图像span一起使用两次Android 如何克隆ImageSpan,android,Android,如何克隆imagespan 我想将setspan()与一个图像span一起使用两次 ImageSpan is = new ImageSpan(this,R.mipmap.ic_launcher); String tx = "dfsfsfsfsfsdfsdfs"; SpannableString ss = new SpannableString(tx); ss.setSpan(is,0,1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ImageSpan is = new ImageSpan(this,R.mipmap.ic_launcher);
String tx = "dfsfsfsfsfsdfsdfs";
SpannableString ss = new SpannableString(tx);
ss.setSpan(is,0,1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(CharacterStyle.wrap(is),6,7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tv.setText(ss);
但是CharacterStyle.wrap不适用于imagespan
感谢您的回答。基本上,您不能这样做,原因可能是框架中存在一个bug。最终绘制时,
ImageSpan
s被视为ReplacementSpan
s;i、 例如,ImageSpan
s通过从span
序列中获取ReplacementSpan
s来找到。但是,当您wrap()
一个ImageSpan
时,它被视为MetricAffectingSpan
——替换span的超类,并被包装在不同的MetricAffectingSpan
子类中,因此当绘制例程查找ReplacementSpan
时,它不会得到任何包装的ImageSpan
s,它们只是被忽略。很好,嗯?事实上,我不该说“你不能”。我的意思是你不能使用CharacterStyle.wrap()
。您当然可以从ReplacementSpan
的后代创建自己的包装器类;e、 “在我的快速测试中,它似乎工作得很好。”@MikeM。我试过了,没关系,对我很有帮助,谢谢你的回答!