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

总结

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

相关推荐
恋猫de小郭1 小时前
Amper 正式转正 Kotlin Toolchain ,Gradle 未来何去何从
android·前端·flutter
plainGeekDev3 小时前
ButterKnife → ViewBinding
android·java·kotlin
成都大菠萝16 小时前
Android Car CarProperty 车辆信号链路
android
敲代码的鱼16 小时前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
时光足迹18 小时前
uni-app 视频通话实战:康复师与患者视频问诊的 6 个致命 Bug 与解决方案
android·ios·uni-app
Coffeeee1 天前
闲聊几句,Android老哥们,你们多久没做技改需求了
android·程序员·代码规范
萝卜er1 天前
Fragment 生命周期与状态恢复-《Android深水区(四)》
android
萝卜er1 天前
Intent 显式、隐式与 PendingIntent-《Android深水区(五)》
android
Kapaseker1 天前
一文吃透 Kotlin 集合操作符
android·kotlin
三少爷的鞋1 天前
Main-safe:现代Android 架构真正的分水岭
android