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

时间:2018-11-14 07:17:19

标签: android url spannablestring spannablestringbuilder

我正在组合不同的字符串以显示在import pymongo db = pymongo.MongoClient('mongodb://username:password@192.168.88.29:27018') 中。我正在使用TextView进行此操作,因为我需要为字符串中的一些子字符串应用不同的颜色。现在,在组合的字符串中,我将以不同的颜色显示URL和其他一些文本。我正在做类似下面的事情。

SpannableStringBuilder

输出为: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.

但是我无法为此找到解决方案。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

您可以喜欢this答案中提到的内容。

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

for (URLSpan span : urls)
{
  strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
  //apply clicks     
}

答案 1 :(得分:0)

使用SpanableString

    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())