在 kotlin 中更改子字符串的颜色
change color in substring in kotlin
我想用不同的颜色制作 "show more",但是在 kotlin 中使用 spannable 无法正常工作。
请帮忙
val mSpannableString = SpannableString("show more")
val mBlue = ForegroundColorSpan(Color.BLUE)
mSpannableString.setSpan(mBlue,2,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
holder.MORE.text = "READ MORE"
if (Expert_answer.length>=300) {
holder.description.text = Expert_answer.substring(0,300)+"..."+mSpannableString
}else{
holder.description.text = Expert_answer
}
我已经这样做了,所以我可以在这里帮助你。
val txtShow ="show"
val txtMore ="More"
val spannable = SpannableString(txtShow) // String for which you want to change the color
spannable.setSpan(ForegroundColorSpan(Color.RED), 0, txtShow.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
txtMessage.text = TextUtils.concat(txtShow,txtMore)
如果仍然需要任何帮助或stuck.Happy编码,请告诉我!!!
下面的函数会将 input
子字符串分成 300 个字符(如果超过 300 个字符),将 "Show more" 附加到它的末尾并将值设置为 holder.description.text
private fun setShowMoreIfNeeded(input: String) {
val maxLenthOfStingShown = 300
holder.description.text = if (input.length > maxLenthOfStingShown) {
SpannableStringBuilder()
.append(input.substring(0, maxLenthOfStingShown))
.color(Color.BLUE) {append("Show more")}
} else {
input
}
}
您还可以为跨度创建自定义实现,如下所示。
val spannable = SpannableStringBuilder(“Text is spantastic!”)
spannable.setSpan(
ForegroundColorSpan(Color.RED),
8, 12,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
这里以你为例
val showMore = "show more"
val Expert_answer =
"sample text sample text sample text sample text sample text sample text sample text sample text "
val Expert_answer =Expert_answer.substring(0, 30) + "..." + showmore
val mSpannableString = SpannableStringBuilder(Expert_answer)
val mBlue = ForegroundColorSpan(Color.BLUE)
mSpannableString.setSpan(mBlue, 33, 42, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
abcTitle.text = mSpannableString
编码愉快!!!
我想用不同的颜色制作 "show more",但是在 kotlin 中使用 spannable 无法正常工作。 请帮忙
val mSpannableString = SpannableString("show more")
val mBlue = ForegroundColorSpan(Color.BLUE)
mSpannableString.setSpan(mBlue,2,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
holder.MORE.text = "READ MORE"
if (Expert_answer.length>=300) {
holder.description.text = Expert_answer.substring(0,300)+"..."+mSpannableString
}else{
holder.description.text = Expert_answer
}
我已经这样做了,所以我可以在这里帮助你。
val txtShow ="show"
val txtMore ="More"
val spannable = SpannableString(txtShow) // String for which you want to change the color
spannable.setSpan(ForegroundColorSpan(Color.RED), 0, txtShow.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
txtMessage.text = TextUtils.concat(txtShow,txtMore)
如果仍然需要任何帮助或stuck.Happy编码,请告诉我!!!
下面的函数会将 input
子字符串分成 300 个字符(如果超过 300 个字符),将 "Show more" 附加到它的末尾并将值设置为 holder.description.text
private fun setShowMoreIfNeeded(input: String) {
val maxLenthOfStingShown = 300
holder.description.text = if (input.length > maxLenthOfStingShown) {
SpannableStringBuilder()
.append(input.substring(0, maxLenthOfStingShown))
.color(Color.BLUE) {append("Show more")}
} else {
input
}
}
您还可以为跨度创建自定义实现,如下所示。
val spannable = SpannableStringBuilder(“Text is spantastic!”)
spannable.setSpan(
ForegroundColorSpan(Color.RED),
8, 12,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
这里以你为例
val showMore = "show more"
val Expert_answer =
"sample text sample text sample text sample text sample text sample text sample text sample text "
val Expert_answer =Expert_answer.substring(0, 30) + "..." + showmore
val mSpannableString = SpannableStringBuilder(Expert_answer)
val mBlue = ForegroundColorSpan(Color.BLUE)
mSpannableString.setSpan(mBlue, 33, 42, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
abcTitle.text = mSpannableString
编码愉快!!!