После invesigation я обнаружил, что метод Linkify.addLinks() удалить текущие пролеты из текста и применить новую один раз (на основе, например, веб-странице URL). Из-за этого мои пробелы из Html.fromHtml() были удалены в начале и никогда не были снова использованы.
Итак, я сделал следующее:
1. Прочтите текст из htmml Html.fromHtml, который дает мне Spanned obj с html spans.
2. Сохранить простирается от HTML в массиве
3. Сделать linkify.addLinks - это метод удаления мои старые пролеты, поэтому я должен добавить его обратно
4. Добавьте старые пролетами
5. Установите текст в TextView.
Реализация:
private void setLabel(){
label.setText(linkifyHTML(Html.fromHtml("text with links here"));
label.setMovementMethod(LinkMovementMethod.getInstance());
label.setLinkTextColor(getRes().getColor(R.color.link));
}
private Spannable linkifyHTML(CharSequence text) {
Spannable s = new SpannableString(text);
URLSpan[] old = s.getSpans(0, s.length(), URLSpan.class);
LinkSpec oldLinks[] = new LinkSpec[old.length];
for (int i = 0; i < old.length; i++) {
oldLinks[i] = new LinkSpec(old[i], s.getSpanStart(old[i]), s.getSpanEnd(old[i]));
}
Linkify.addLinks(s, Linkify.ALL);
for (LinkSpec span : oldLinks) {
s.setSpan(span.span, span.start, span.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return s;
}
class LinkSpec {
final URLSpan span;
final int start, end;
public LinkSpec(URLSpan urlSpan, int spanStart, int spanEnd) {
span = urlSpan;
start = spanStart;
end = spanEnd;
}
}