Как сделать спойлер с помощью View как в Telegram

«Как сделать спойлер с помощью View как в Telegram» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для создания спойлера можно использовать 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 для моноширинного шрифта
  • Сохранять состояние спойлера (раскрыт/скрыт)