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()

总结

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

相关推荐
传奇开心果编程6 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓8 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc1239 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium
Dovis(誓平步青云)9 小时前
导览音频切换太快,旧讲解不能覆盖新展品
android·前端·javascript·ecmascript·音视频·宠物
五彩小白1 天前
自回归和上下文
android
事圆则缓1 天前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android