@bonjorecs

Как выделить фрагменты текста и визуально обозначить их в блоки?

Перечитал много статей, чтобы хоть как-то имел представление на реализацию функции, с помощью которой пользователь смог выделять фрагменты из текста и я наткнулся на некие источники моего решения. Проблема в том, что я новичок и не знаю как реализовать это на java. Могли бы вы помочь с примером реализации.
Так же не уверен, на каком языке это написано Java/Kotlin.

Вот исходник:
val text = "[Toto] is [doing a lot of] stuff at the same time."

val spanStack = Stack<Pair<Int, Int>>()
var index = 0

text.forEach {
    when (it) {
        '[' -> spanStack.push(index to index)
        ']' -> spanStack.push(spanStack.pop().first to index)
        else -> index++
    }
}

val spannableString = text
    .replace("[\\[\\]]".toRegex(), "")
    .let { SpannableString(it) }
    .apply {
        spanStack.forEach {
            setSpan(
                BackgroundColorSpan(Color.YELLOW),
                it.first,
                it.second,
                SpannableString.SPAN_INCLUSIVE_INCLUSIVE
            )
        }
    }

textView.text = spannableString


результат:
62a9a962cac9d449160870.png

Не знаю как реализовать с обработчиком. То есть пользователю необходимо самому кликать и это должно выделяться как на картинке выше
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@xaiponews
В превью активити выбери TextView где будет выделятся текст, потом в атрибутах найди параметр textIsSelectable, поставь галочку, появится true, и ты сможешь выделять текст.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы