1

我正在组合不同的字符串以显示在TextView. 我正在使用 a 来执行此操作SpannableStringBuilder,因为我需要对字符串中的一些子字符串应用不同的颜色。现在在组合字符串中,有一些我用不同颜色显示的 url 以及一些其他文本。我正在做类似下面的事情。

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 之后显示其余文本。

例如。

Link1
Link2
some links here

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

4

2 回答 2

3

你可以像这个答案中提到的那样做。

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

for (URLSpan span : urls)
{
  strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
  //apply clicks     
}
于 2018-11-14T07:34:58.413 回答
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())
于 2018-11-14T07:25:15.983 回答