首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SpannableStringBuilder getSpans()中添加额外行

在SpannableStringBuilder getSpans()中添加额外行
EN

Stack Overflow用户
提问于 2018-11-14 07:17:18
回答 2查看 790关注 0票数 3

我正在组合不同的字符串以在TextView中显示。我使用的是SpannableStringBuilder,因为我需要对字符串中的几个子字符串应用不同的颜色。现在,在组合字符串中,有一些urls,我用不同的颜色显示,还有其他一些文本。我正在做下面这样的事情。

代码语言:javascript
复制
Spannable spannedText = (Spannable) Util.getFormattedText(plainText);
SpannableStringBuilder strBuilder = new SpannableStringBuilder(spannedText);
URLSpan[] urls = strBuilder.getSpans(0, spannedText.length(), URLSpan.class);
for (URLSpan span : urls)
{
    //apply clicks               
}

输出是:Link1 Link2 some links here.

我想在url之后用文本的其余部分在不同的行上显示每个url。

例如:

代码语言:javascript
复制
Link1
Link2
some links here

但我无法找到解决这个问题的办法。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-14 07:34:58

您可以像this答案中提到的那样做。

只需使用您的UrlSpan而不是ImageSpan,如下所示:

代码语言:javascript
复制
for (URLSpan span : urls)
{
  strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
  //apply clicks     
}
票数 4
EN

Stack Overflow用户

发布于 2018-11-14 07:25:15

使用SpanableString

代码语言:javascript
复制
    SpannableString spanUrl1 = new SpannableString("www.google.com");
    spanUrl1.setSpan(new ForegroundColorSpan(Color.BLUE), 0, spanUrl1.length(), 
                       Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
   Spannable spanUrl2 = new SpannableString("www.stackoverflow.com");
   spanUrl2.setSpan(new ForegroundColorSpan(Color.RED), 0, spanUrl2.length(), 
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

   TV.setText(TextUtils.concat(spanUrl1, "\n",spanUrl2));
   TV.setMovementMethod(LinkMovementMethod.getInstance())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53294916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档