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

总结

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

相关推荐
码农的小菜园2 分钟前
Android架构学习笔记
android·学习·架构
风酥糖22 分钟前
在Termux中运行Siyuan笔记服务
android·linux·服务器·笔记
蜡台1 小时前
Android Gradle 项目下载编译失败解决---持续更新
android·java·kotlin·gradle
黄昏晓x2 小时前
C++11
android·java·c++
simplepeng2 小时前
TikTok 通过 Jetpack Compose 将代码大小减少 58%,并提升了新功能的 app 性能
android·android jetpack
毕设源码-钟学长3 小时前
【开题答辩全过程】以 基于Android的充电宝租赁管理软件的设计与实现为例,包含答辩的问题和答案
android
Be for thing3 小时前
Android 蓝牙 & WiFi 硬件原理 + 功耗与异常定位实战(手机 / 手表 / IoT 通用)
android·物联网·学习
00后程序员张3 小时前
使用克魔助手(Keymob)查看 iOS 设备日志与崩溃报告
android·macos·ios·小程序·uni-app·cocoa·iphone
__Yvan4 小时前
解决ConstraintLayout中LinearLayout显示异常问题
android·xml·约束布局
mjhcsp4 小时前
C++ A* 算法:启发式路径搜索的黄金标准
android·c++·算法