TextView设置不同的点击事件与不同的颜色(kotlin版)

设置不同的点击事件

class TextClick(val content: String, val context: Context) : ClickableSpan() {
        override fun onClick(widget: View?) {
            when (content) {
                "《委托扣款协议》" -> {
                    "《委托扣款协议》被点击了".toast()
                }
                "《快捷支付服务和相关协议》" -> {
                    "《快捷支付服务和相关协议》".toast()
                }
            }
        }

        override fun updateDrawState(ds: TextPaint?) {
            super.updateDrawState(ds)
            //需要设置,否则默认为蓝色  也可以设置字体颜色
            ds?.setColor(context.getResources().getColor(R.color.color_333));
            //去下划线
            ds?.isUnderlineText = false 
        }
    }

使用

        val arg1 = "《委托扣款协议》"
        val arg2 = "《快捷支付服务和相关协议》"
        val spanArg1 = SpannableString(arg1)
        val spanArg2 = SpannableString(arg2)
        val clickttt = TextClick(arg1, this)
        val clicksss = TextClick(arg2, this)
        spanArg1.setSpan(clickttt, 0, arg1.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
        spanArg2.setSpan(clicksss, 0, arg2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
        tvArgeement.text = "同意"
        tvArgeement.append(spanArg1)
        tvArgeement.append("和")
        tvArgeement.append(spanArg2)
        tvArgeement.movementMethod = LinkMovementMethod.getInstance()

flag属性

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)

Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)

Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)

Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)
Kotlin 中,您可以使用 SpannableString 和 ClickableSpan 实现在 TextView设置不同字体大小、颜色点击事件的效果。下面是一个示例代码: ```otlin val text = "这是一个示例文本" val spannableString = SpannableString(text) // 设置部分文字的字体大小 val sizeSpan = RelativeSizeSpan(1.5f) // 放大1.5倍 spannableString.setSpan(sizeSpan, 2, 5, Spanned.SPAN_INCLUSIVE_INCLUSIVE) // 设置第2到第5个字符的字体大小 // 设置部分文字的颜色 val colorSpan = ForegroundColorSpan(Color.RED) spannableString.setSpan(colorSpan, 8, 10, Spanned.SPAN_INCLUSIVE_INCLUSIVE) // 设置第8到第10个字符的颜色 val textView = findViewById<TextView>(R.id.textView) textView.text = spannableString // 设置部分文字的点击事件 val clickableSpan = object : ClickableSpan() { override fun onClick(widget: View) { // 在这里处理点击事件 Toast.makeText(this@MainActivity, "点击事件触发了", Toast.LENGTH_SHORT).show() } } spannableString.setSpan(clickableSpan, 2, 4, Spanned.SPAN_INCLUSIVE_INCLUSIVE) // 设置第2到第4个字符的点击事件 textView.text = spannableString textView.movementMethod = LinkMovementMethod.getInstance() // 必须设置这个方法才能触发点击事件 ``` 上述代码中,我们创建了一个 SpannableString 对象,然后使用 setSpan() 方法来设置不同的 Span(包括字体大小、颜色点击事件)。最后,将 SpannableString 对象设置TextView 显示出来。 希望能对您有所帮助!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值