делаю HtmlCompat.fromHtml().toSpannable()
После беру этот текст и ищу URLSpan:
val spans = html.getSpans(0, html.length, URLSpan::class.java)
Таким образом я пытаюсь получить линку. После чего довольно незамысловато подменяю линку:
spans.forEach { span ->
val start = html.getSpanStart(span)
val end = html.getSpanEnd(span)
val flags = html.getSpanFlags(span)
val clickable: ClickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
callback.onLinkClicked(block, span.url ?: "")
}
}
html.removeSpan(span)
html.setSpan(clickable, start, end, flags)
}
Проблема в том, что тогда теряется font color спан (ForegroundColorSpan) и текст не красится
Вопрос: Как правильно оставить цвет для этого спана?
Пробовал так ещё (явно достать спан и назначит ещё раз, но чёт не красится):
val all = html.getSpans<CharacterStyle>(0, html.length).filter { it !is URLSpan }
all.forEach { span ->
val start = html.getSpanStart(span)
val end = html.getSpanEnd(span)
html.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) //для ClickbleSpan тоже явно этот флаг поставил
}
а если html.setSpan(new URLSpan(url) ?
Не)
val all = html.getSpans<CharacterStyle>(0, html.length).filter { it !is URLSpan } all.forEach { span -> val start = html.getSpanStart(span) val end = html.getSpanEnd(span) html.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) //для ClickbleSpan тоже явно этот флаг поставил } Перед setSpan надо было добавить html.removeSpan(span) и поставить после сеттинга ClickableSpan
Обсуждают сегодня