Android之SpannableString使用

文章目录


前言

在开发中,往往有些需求是我们不愿意遇到的,但是也不得不处理的事情,比如一段文案,需要文案中某些文字变颜色或者点击跳转,所以简单写了几句代码实现,没什么难度,所以我就直接贴代码了!


一、效果图

二、实现代码

kotlin 复制代码
  var str =
            "歡迎您使用Bitcat!我們非常重視您的個人信息和隱私保護。為了更好的保障您的個人權益,在您使用我們的產品前,請認真閱讀《Bitcat雲算力服務協定》和《隱私條款》的全部內容。【應用信息】Bitcat是全球領先的礦機分時共享平臺,為用戶提供一整套的雲挖礦服務解決方案,打包管理了礦機購買,物流運輸,電力管理,礦場運維等復雜流程,用戶只需一鍵下單即可享受服務。為提供上述服務,本應用使用過程中,需要調用您的設備的以下權限:網絡,電話,設不同意,請您立刻停止使用Bitcat."
        var spannableString = SpannableString(str)
        //点击
        spannableString.setSpan(object : ClickableSpan() {
            override fun onClick(widget: View) {
               
            }

            override fun updateDrawState(ds: TextPaint) {
                super.updateDrawState(ds)
                ds.color = Color.parseColor("#FCBD24")
                //取消默认的下划线
                ds.isUnderlineText = false
            }
        }, 60, 75, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)//第一个参数,起始位置,第二个参数截止为止
        //点击
        spannableString.setSpan(object : ClickableSpan() {
            override fun onClick(widget: View) {
              
            }

            override fun updateDrawState(ds: TextPaint) {
                super.updateDrawState(ds)
                ds.color = Color.parseColor("#FCBD24")
                //取消默认的下划线
                ds.isUnderlineText = false
            }
        }, 76, 82, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        //然后把spannableString放进到Text中
        text_nr.text = spannableString
//        text_nr.text =
//            "歡迎您使用Bitcat!我們非常重視您的個人信息和隱私保護。為了更好的保障您的個人權益,在您使用我們的產品前,請認真閱讀" + spannableString + "和" + spannableString1 + "的全部內容。【應用信息】Bitcat是全球領先的礦機分時共享平臺,為用戶提供一整套的雲挖礦服務解決方案,打包管理了礦機購買,物流運輸,電力管理,礦場運維等復雜流程,用戶只需一鍵下單即可享受服務。為提供上述服務,本應用使用過程中,需要調用您的設備的以下權限:網絡,電話,設不同意,請您立刻停止使用Bitcat."
        //中途遇到点击后字体显示高亮,取消高亮
        text_nr.highlightColor = Color.parseColor("#00000000")
        //最后设置可点击,必须实现,否则只能显示样式,无法实现点击效果
        text_nr.movementMethod = LinkMovementMethod.getInstance()

总结

截取字符串的方法有很多种,我就用了最简单的,这个不强求看自己!

相关推荐
独自破碎E2 分钟前
BISHI53 [P1080] 国王游戏(简化版)
android·java·游戏
阮松云34 分钟前
安卓Citra闪退,天马g前端3ds无法启动,Citra闪退
android
独行soc2 小时前
2026年渗透测试面试题总结-26(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
码云数智-园园2 小时前
深入理解 Android 消息机制:Handler、Looper 与 MessageQueue 的协同工作原理
android
ritxgt00611 小时前
MySQL 数据增删改查
android·数据库·mysql
zlpzpl12 小时前
MySQL 的 INSERT(插入数据)详解
android·数据库·mysql
Jomurphys15 小时前
Compose 调用 - 震动 LocalHapticFeedback
android·compose
非凡ghost15 小时前
小X分身APP(手机分身类工具)
android·windows·学习·智能手机·软件需求
erqi18 小时前
Compose你入门吧
android
q***765618 小时前
MySQL 中如何进行 SQL 调优
android·sql·mysql