Ставим несколько клик-листенеров на разные буквы TextView
Иногда возникает потребность отобразить сплошной текст, в котором будет несколько ссылок
Можно:
• повесить OnTouchListener и вычислять координату каждой буквы по тапу — но это больше похоже на лайфхаки из тик-тока а-ля "что делать, если сверху кружка запаяна, а снизу в ней дырка"
• засунуть в проект библиотеку с FlowLayout (а-ля LinearLayout, но с автоматическим переносом вьюх на следующую строчку) и запихать в него отдельные TextView для каждого слова — но не надо
А можно сделать быстро и встроенными средствами:
1. создаем для каждой ссылки отдельный SpannableString
2. на каждый SpannableString вешаем свой ClickableSpan(), содержащий колбэк onClick()
3. собираем все SpannableString через SpannableStringBuilder и передаем его через textView.setText(builder)
4. меняем textView.movementMethod = LinkMovementMethod, чтобы TextView научилась обрабатывать касания на отдельные участки
5. ставим цвет ссылок с помощью textView.linkTextColor = color
готово, нажатия на определенные символы будет выполнять разные действия
....
по совету читателей решил приводить небольшие куски кода - ссылки буду оставлять в комментариях
Post #46
1.75K