Android,setSpan 两次?

标签 android spannablestring

假设我有一个 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/

相关文章:

android - 在Android中实现自定义音频HAL

android - PowerMockito:模拟的 NotAMockException

android - 如何在 staticlayout 和 surfaceview 中包含可点击的文本

android - 什么是 (D/NSD : curPkgName is not in list)?

javascript - 想在 android 中使用 node.js 和 socket.io 发送图像

android - 以编程方式滚动 ListView 时隐藏滚动条?

java - 将自定义 Editable 与 EditText 一起使用会导致编辑时出现问题

Android TextView格式化多个单词

android - 为 RecyclerView 缓存 Spannable 字符串

android - 如何使用 Android SpannableString 和 MaskFilterSpan 按预期模糊 TextView 中的某些文本?