未解决的参考:Kotlin中的setSpan

时间:2019-01-10 11:21:24

标签: android kotlin

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

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)

所有代码设置的炉排,但错误出现在以下行:

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

错误

Unresolved reference: setSpan

所以我该如何解决此错误?

2 个答案:

答案 0 :(得分:0)

您需要使用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())

答案 1 :(得分:0)

@Alex代码有效,但是您要设置显示 * 的位置。所以我可以使用下面的代码。在*的末尾显示符号 String

        var simple : String? = resources.getString(R.string.mobile_number)

        var colored : String?  = " *"

        var builder = SpannableStringBuilder()

        builder.append(simple)
        var start = builder.length
        builder.append(colored)
        var end = builder.length

        builder.setSpan(ForegroundColorSpan(Color.RED), start, end,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

        hint_mobile!!.setText(builder);