Home Kotlin SpannableString
Post
Cancel

Kotlin SpannableString

๐Ÿ“š Kotlin SpannableString

โ“ SpannableString

SpannableString class๋Š” ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ํ…์ŠคํŠธ ์ผ๋ถ€์˜ ์ƒ‰์ƒ, ํฌ๊ธฐ, ์Šคํƒ€์ผ ๋“ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

image

์œ„์˜ ์‚ฌ์ง„์€ ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•œ ์˜ˆ์‹œ์ด๋‹ค.

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)
This post is licensed under CC BY 4.0 by the author.

Kotlin Firebase

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] N-Queen