๐ Kotlin SpannableString
โ SpannableString
SpannableString class๋ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ ๋ ํ ์คํธ ์ผ๋ถ์ ์์, ํฌ๊ธฐ, ์คํ์ผ ๋ฑ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค.

์์ ์ฌ์ง์ ํ์ฌ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์ ์ ์ฉํ ์์์ด๋ค.
TextView์ ๋ด์ฉ ์ค ์ค๋ฅธ์ชฝ ๋๋ฐ์ด์ ํฌ์ธํธ๋ฅผ ์ฃผ๊ณ ์ถ์ด์ SpannableString class๋ฅผ ์ฌ์ฉํ์๋ค.
๐ Process
1. ์๋์ ๊ฐ์ด ๋๋ฐ์ด๋ฅผ ๋ณ๊ฒฝํด ์ค ํจ์๋ฅผ ๊ตฌํํ์๋ค.
1
2
3
4
5
6
7
8
9
10
11
private fun setRange(date: String, day: String): SpannableString {
val start = date.length
val end = date.length + day.length
val spannable = SpannableString("$date$day")
// ๊ธ์ ์์ ๋ณ๊ฒฝ
spannable.setSpan(ForegroundColorSpan(getColor(R.color.blue)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
// ๊ธ์ ์คํ์ผ ๋ณ๊ฒฝ
spannable.setSpan(StyleSpan(Typeface.BOLD), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// ๊ธ์ ํฌ๊ธฐ ๋ณ๊ฒฝ
spannable.setSpan(RelativeSizeSpan(1.3f), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
}
2. ํจ์๋ฅผ ํธ์ถํ๋ค. (๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ํด๋นํ๋ ํ ์คํธ์ ์คํ์ผ์ ๋ณ๊ฒฝํ ๊ฒ์ด๋ค.)
1
binding.tvRange.setText(setRange(strDate, "+$day"), TextView.BufferType.SPANNABLE)