首页 > 解决方案 > 未解决的参考:Kotlin 中的 setSpan

问题描述

我想在必填字段中设置符号 *。为此我可以使用下面的代码行:

hint_mobile!!.setText(Html.fromHtml(resources.getString(R.string.mobile_number) + "<sup> * </sup>"));

这是工作,但我不能在这个符号上设置红色 *

所以我使用下面的另一个例子:

hint_mobile!!.setText(resources.getString(R.string.mobile_number))
        val str = hint_mobile!!.text.toString()
        val loc = hint_mobile!!.text.toString().indexOf("*")
        str!!.setSpan(ForegroundColorSpan(Color.RED), loc, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)

所有代码集 grate 但错误出现在以下行:

str!!.setSpan(ForegroundColorSpan(Color.RED), loc, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)

错误

Unresolved reference: setSpan

那么我该如何解决这个错误?

标签: androidkotlin

解决方案


您需要使用 SpannableString,如下所示:

val spannableString = SpannableString("${resources.getString(R.string.mobile_number)} *")
val loc = spannableString.toString().indexOf("*")
spannableString.setSpan(ForegroundColorSpan(Color.RED), loc, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
hint_mobile!!.setText(spannableString.toString())

推荐阅读