在 SpannableStringBuilder getSpans() 中添加额外的行
Add extra line in SpannableStringBuilder getSpans()
我正在组合不同的字符串以在 TextView
中显示。我正在使用 SpannableStringBuilder
执行此操作,因为我需要对字符串中的几个子字符串应用不同的颜色。现在在组合的字符串中,有 urls,我用不同的颜色显示它们以及一些其他文本。我正在做类似下面的事情。
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
但是我找不到解决办法。任何帮助表示赞赏。
使用 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.whosebug.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())
您可以像 this 回答中提到的那样做。
只需使用您的 UrlSpan
而不是如下所示的 ImageSpan
:-
for (URLSpan span : urls)
{
strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
//apply clicks
}
我正在组合不同的字符串以在 TextView
中显示。我正在使用 SpannableStringBuilder
执行此操作,因为我需要对字符串中的几个子字符串应用不同的颜色。现在在组合的字符串中,有 urls,我用不同的颜色显示它们以及一些其他文本。我正在做类似下面的事情。
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
但是我找不到解决办法。任何帮助表示赞赏。
使用 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.whosebug.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())
您可以像 this 回答中提到的那样做。
只需使用您的 UrlSpan
而不是如下所示的 ImageSpan
:-
for (URLSpan span : urls)
{
strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
//apply clicks
}