Kotlin Practice # 11 多彩文字
Mar 30, 2023
上一篇完成了在Jetpack Compose透過分享指定文字的方法,side project又邁進了一步。
Kotlin Practice # 10 Compose分享文字內容
上一篇完成了在Compose內顯示橫幅廣告的方式,side project又解決了一個問題。
dogpa0130.medium.com
這一篇則要來記錄工作上的一個需求,需要在一個TextView內顯示不同的文字。一開始覺得很難,但Android原生已經能提供解決方法。在這邊紀錄兩個方式。
第一種方式是透過SpannableString
//建立字串內容
val spannableString = SpannableString("abcd1234中文英文")
//建立顏色
val foregroundColor = ForegroundColorSpan(Color.BLUE)
//設定影響的範圍與顏色
spannableString.setSpan(foregroundColor,0,7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
//指派給TextView
binding.colorTextView.text = spannableString
binding.colorTextView .movementMethod = LinkMovementMethod.getInstance()
顯示如下:
第二種是透過Spanned
private fun getColorfulText(first:String, second: String, third: String): Spanned {
val colorfulStr = Html.fromHtml("<font color=${Color.GREEN}>${first} </font>" + "<font color=${Color.RED}> ${second}</font>" + "<font color=${Color.BLACK}> ${third} </font>")
return colorfulStr
}
binding.colorSecondTextView.text = getColorfulText("Android","很有趣","happy!")
顯示如下:
兩種都可以處理多彩的文字,不過第二種已經被Android棄用了,第一種也能針對字體去額外設計字體、大小等,所以靈活度第一種還是比較有優勢。
以上自己做紀錄順便分享給大家,持續加油!!
相關知識