Kotlin Practice # 11 多彩文字

Dogpa Chen
Mar 30, 2023

上一篇完成了在Jetpack Compose透過分享指定文字的方法,side project又邁進了一步。

這一篇則要來記錄工作上的一個需求,需要在一個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棄用了,第一種也能針對字體去額外設計字體、大小等,所以靈活度第一種還是比較有優勢。

以上自己做紀錄順便分享給大家,持續加油!!

相關知識

--

--