假设我有一个 SpannableString
,其中为 span 设置了一个 URLSpan,如下所示:
SpannableString ss = new SpannableString(text);
ss.setSpan(new URLSpan("com://my.app"), 3, 6,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
然后我为该跨度设置了另一个 URLSpan。但是第二个 URLSpan 不起作用,第一个起作用。我不能使用 ss.removeSpan(what);
因为我不想删除所有 URLSpans .我该如何解决这个问题?
最佳答案
我在特定跨度(我想为其重置)中使用 getSpans()
来获取它的跨度,然后我使用 removeSpan
将其删除:
SpannableString ss = new SpannableString(text);
ss.setSpan(new URLSpan("com://my.app"), 3, 6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
URLSpan[] toRemoveSpans = ss.getSpans(3, 6, URLSpan.class);
ss.removeSpan(toRemoveSpans[0]);
ss.setSpan(new MyURLSpan("com://my.app"), 3, 6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
关于Android,setSpan 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875281/