Ответ
Для создания спойлера можно использовать TextView с кастомным Spannable. Вот пример:
val text = "Спойлерный текст"
val spannable = SpannableString(text)
spannable.setSpan(
ForegroundColorSpan(Color.TRANSPARENT),
0,
text.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
BackgroundColorSpan(Color.GRAY),
0,
text.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
textView.setOnClickListener {
// Убираем эффект спойлера при клике
textView.text = text
}
Дополнительно можно:
- Добавить анимацию при раскрытии
- Использовать
TypefaceSpanдля моноширинного шрифта - Сохранять состояние спойлера (раскрыт/скрыт)