Добавить дополнительную строку в SpannableStringBuilder getSpans () - PullRequest
0 голосов
/ 14 ноября 2018

Я объединяю различные строки, чтобы показать в TextView. Я делаю это, используя 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

Но я не могу найти решение для этого. Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете сделать то, что упоминается в этом ответе.

Просто используйте UrlSpan вместо ImageSpan, как показано ниже: -

for (URLSpan span : urls)
{
  strBuilder = strBuilder.insert(strBuilder.getSpanEnd(span), System.getProperty("line.separator"));
  //apply clicks     
}
0 голосов
/ 14 ноября 2018

Использовать 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...