我是靠谱客的博主 顺心黑裤,最近开发中收集的这篇文章主要介绍android中TextView不同颜色和部分区域的点击事件前言一、ClickableSpan添加部分文字的点击事件二、ForegroundColorSpan设置部分字体的颜色三.先设置可点击,再设置字体颜色总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 前言
- 一、ClickableSpan添加部分文字的点击事件
- 二、ForegroundColorSpan设置部分字体的颜色
- 三.先设置可点击,再设置字体颜色
- 总结
前言
android中通过SpannableStringBuilder实现一个TextView中不同颜色显示和部分文字的点击事件
提示:以下是本篇文章正文内容,下面案例可供参考
一、ClickableSpan添加部分文字的点击事件
val mSpannableStringBuilder: SpannableStringBuilder = SpannableStringBuilder()
mSpannableStringBuilder.append("登录/注册即表示同意<<用户协议>>")
val mClickableSpan: ClickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
val action = RichTextFragmentArgs("title", "type").toBundle()
Navigation.findNavController(widget).navigate(R.id.richText, action)
}
}
mSpannableStringBuilder.setSpan(
mClickableSpan, 10, mSpannableStringBuilder.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
mFragmentLoginBinding!!.tvUserAgreement.highlightColor =
Color.TRANSPARENT //设置点击后的颜色为透明,否则会一直出现高亮
mFragmentLoginBinding!!.tvUserAgreement.text = mSpannableStringBuilder
mFragmentLoginBinding!!.tvUserAgreement.movementMethod = LinkMovementMethod.getInstance()
设置字体可点击后,可点击部分字体的颜色会变。
二、ForegroundColorSpan设置部分字体的颜色
val mForegroundColorSpan: ForegroundColorSpan =
ForegroundColorSpan(requireActivity().resources.getColor(R.color.green_FF00612E))
mSpannableStringBuilder.setSpan(
mForegroundColorSpan, 10, mSpannableStringBuilder.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
mFragmentLoginBinding!!.tvUserAgreement.text = mSpannableStringBuilder
三.先设置可点击,再设置字体颜色
val mSpannableStringBuilder: SpannableStringBuilder = SpannableStringBuilder()
mSpannableStringBuilder.append(mFragmentLoginBinding!!.tvUserAgreement.text.toString())
val mClickableSpan: ClickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
val action = RichTextFragmentArgs("title", "type").toBundle()
Navigation.findNavController(widget).navigate(R.id.richText, action)
}
}
mSpannableStringBuilder.setSpan(
mClickableSpan, 10, mSpannableStringBuilder.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
mFragmentLoginBinding!!.tvUserAgreement.highlightColor =
Color.TRANSPARENT //设置点击后的颜色为透明,否则会一直出现高亮
mFragmentLoginBinding!!.tvUserAgreement.text = mSpannableStringBuilder
mFragmentLoginBinding!!.tvUserAgreement.movementMethod = LinkMovementMethod.getInstance()
val mForegroundColorSpan: ForegroundColorSpan =
ForegroundColorSpan(requireActivity().resources.getColor(R.color.green_FF00612E))
mSpannableStringBuilder.setSpan(
mForegroundColorSpan, 10, mSpannableStringBuilder.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
mFragmentLoginBinding!!.tvUserAgreement.text = mSpannableStringBuilder
总结
https://developer.android.com/reference/android/text/SpannableStringBuilder?hl=en
最后
以上就是顺心黑裤为你收集整理的android中TextView不同颜色和部分区域的点击事件前言一、ClickableSpan添加部分文字的点击事件二、ForegroundColorSpan设置部分字体的颜色三.先设置可点击,再设置字体颜色总结的全部内容,希望文章能够帮你解决android中TextView不同颜色和部分区域的点击事件前言一、ClickableSpan添加部分文字的点击事件二、ForegroundColorSpan设置部分字体的颜色三.先设置可点击,再设置字体颜色总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复