正如郑兴杰指出的,您可以使用removeSpan() 删除特定跨度,但您需要存储跨度对象。
但是,我遇到了一个案例,我需要匿名删除一组相同样式的 span,并保留其他样式,所以我通过迭代这种特定类型的 span 来做到这一点,如下所示:
在我的例子中,它是BackgroundColorSpan,但我将使用StyleSpan,就像有人问过的那样:
Java
SpannableString content = new SpannableString("Test Text");
content.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, content.length(), 0);
StyleSpan[] spans = content.getSpans(0, content.length(), StyleSpan.class);
for (StyleSpan styleSpan: spans) content.removeSpan(styleSpan);
textview.setText(content);
科特林
val content = SpannableString("Test Text")
content.setSpan(StyleSpan(Typeface.BOLD_ITALIC), 0, content.length, 0)
val spans = content.getSpans(0, content.length, StyleSpan::class.java)
for (styleSpan in spans) content.removeSpan(styleSpan)
textview.setText(content)