Android SpannableString 给TextView 设置颜色,删除线等
SpannableString 修改指定字体颜色,用在协议方面, 给字体添加下划线,删除线,等功能 。
setSpan(Object what, int start, int end, int flags)方法需要用户输入四个参数,what
表示设置的格式是什么,可以是前景色、背景色也可以是可点击的文本等等,start
表示需要设置格式的子字符串的起始下标,同理end
表示终了下标,flags
属性就有意思了,共有四种属性:
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
从起始下标到终了下标,包括起始下标
Spanned.SPAN_INCLUSIVE_INCLUSIVE
从起始下标到终了下标,同时包括起始下标和终了下标
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
从起始下标到终了下标,但都不包括起始下标和终了下标
Spanned.SPAN_EXCLUSIVE_INCLUSIVE
从起始下标到终了下标,包括终了下标
SpannableString的setSpan()方法可以同时使用多个,实现多种效果叠加。
span常见的功能
- ForegroundColorSpan:前景色
- BackgroundColorSpan:背景色
- ClickableSpan:抽象类,可点击效果,重写onClick方法响应点击事件
- URLSpan:超链接
- MaskFilterSpan:EmbossMaskFilter浮雕效果,BlurMaskFilter模糊效果
- RelativeSpan:文字相对大小
- AbsoluteSpan:文字绝对大小
- ScaleXSpan:x轴缩放
- styleSpan:文字样式
- TypefaceSpan:文字字体类型
- TextApearanceSpan:文字外貌
- UnderlineSpan:下划线
- StrikeThroughSpan:删除线
- SuperscriptSpan:上标
- SubscriptSpan:下标
- ImageSpan:图片
实现 指定字体颜色之改变
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);textView.setText(spannableString);
效果图
现在把价格文字变大
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3f);spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(sizeSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);textView.setText(spannableString);
效果图
在给价格设置一个背景颜色
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3f);BackgroundColorSpan colorSpan = new BackgroundColorSpan(Color.parseColor("#00d8a0"));spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(sizeSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(colorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
效果图
给价格添加一个下划线
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3f);BackgroundColorSpan colorSpan = new BackgroundColorSpan(Color.parseColor("#00d8a0"));UnderlineSpan underlineSpan = new UnderlineSpan();spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(sizeSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(colorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(underlineSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
效果图
给价格添加一个删除线
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3f);BackgroundColorSpan colorSpan = new BackgroundColorSpan(Color.parseColor("#00d8a0"));UnderlineSpan underlineSpan = new UnderlineSpan();StrikethroughSpan strikethroughSpan = new StrikethroughSpan();spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(sizeSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(colorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(underlineSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(strikethroughSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
效果图
给价格设置一个点击事件
SpannableString spannableString = new SpannableString("仅售:26元");ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF0000"));RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3f);BackgroundColorSpan colorSpan = new BackgroundColorSpan(Color.parseColor("#00d8a0"));UnderlineSpan underlineSpan = new UnderlineSpan();StrikethroughSpan strikethroughSpan = new StrikethroughSpan();ClickableSpan clickableSpan = new ClickableSpan() {@Overridepublic void onClick(View widget) {Toast.makeText(ThreeActivity.this, "点击了价格", Toast.LENGTH_SHORT).show();}};spannableString.setSpan(foregroundColorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(sizeSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(colorSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(underlineSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(strikethroughSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);spannableString.setSpan(clickableSpan,3,5, Spanned.SPAN_INCLUSIVE_INCLUSIVE);textView.setMovementMethod(LinkMovementMethod.getInstance());textView.setText(spannableString);
需要注意的是设置点击事件的时候 在textview.setText 之前需要使用
setMovementMethod()方法否则点击无效果。。。。
Android SpannableString 给TextView 设置颜色,删除线等相关推荐
- Android动态改变TextView字体颜色
Android动态改变TextView字体颜色 分类: Android 2012-06-04 21:56 141人阅读 评论(0) 收藏 举报 androidcolorslayout 必须在在res/ ...
- Android: 在 TextView 里使用删除线
以编程的方式添给 TextView 添加删除线: textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); 顺便研究下: TextView. ...
- 给TextView设置颜色选择器selector
在项目中遇到一种情形,一个TextView如果可以点击-文字颜色为黑色,当点击以后就变为不可点击-文字颜色为蓝色. 然后当然是选择selector了, <selector xmlns:andro ...
- Android Studio中如何设置颜色拾色器工具
Android Studio如何设置颜色拾色器工具Color Picker? 你可能下载过一些获取颜色值的一些小工具, 这种方式获取颜色,需要先切换窗口转跳到桌面,然后打开拾色器小工具程序,然后去拾取 ...
- Android基础篇 TextView 设置行间距字间距
一.行间距 TextView 设置行间距可以通过设置TextView属性的 android:lineSpacingExtra 或 android:lineSpacingMultiplier 来达到效果 ...
- android设置字体滚动,Android开发:TextView设置字体横向滚动
最近项目中遇到textview中文字显示不全的问题,由于界面设计原因,textview只能占比一定的宽度.基于以上情况,查找了一下textview的属性,强大的textview居然可以设置字体滚动,于 ...
- android 颜色设置透明度,android端如何实现设置颜色透明度?
AngularJS 系列 02 - 模块 引导目录: AngularJS 系列 学习笔记 目录篇 前言: 其实,在上篇文章介绍数据绑定的时候,我们的HelloWorld的代码案例中就已经使用了模块(m ...
- Android SpannableString详细解析
可以看出所有Span都继承于CharacterStyle这个抽象类,另外MetricAffectingSpan.ReplacementSpan和ClickableSpan都是抽象类,下面展示一些常用的 ...
- android+设置字体行高,TextView设置行间距、行高,以及字间距
一. 设置TextView行间距.行高: Android系统中TextView有默认行间距,但是比较窄有的时候需要我们设置每行行间距. TextView为我们提供了相关设置属性android:line ...
最新文章
- ha-2:read-project-properties (default) on project
- iPhone Three20软件引擎之构建开发环境与HelloWorld
- 链接器ld程序的脚本文件u-boot.lds(二)
- 腾云驾雾的计算,让你蒙圈了么?
- mysql8和5.7区别_MySQL 8、MySQL 5.7和Percona server for MySQL性能比较
- elementui可编辑单元格_ElementUI table组件实现点击单元格可编辑
- php fsockopen 异步,异步执行PHP任务fsockopen的干货
- hive使用适用场景_ 如何将Hive与HBase整合联用
- 数据库实验一:创建数据库和表
- SQLMap常用命令介绍
- Android Lolipop AssetAtlasService引起的系统崩溃
- 【成功入坑-利用Python进行数据分析·第2版】第一章:准备工作(Preliminaries)
- 视频大数据与物联网(IoT)融合发展的探索
- rxjava背压_Android RxJava :图文详解 背压策略
- iOS 开源项目(一)
- Android常见的问题
- 各种注释-注释多行与取消多行注释快捷键
- 大数据应用在医疗行业的5个经典案例
- 微机原理知识点总结10-12
- 19.Atomic系列之LongAdder的底层原理(分段锁提升并发性能)
热门文章
- nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问
- 2021-2027年中国医疗旅游业投资分析及前景预测报告
- Docker compose 容器编排
- Plotly_绘图画图作图交互
- pytorch 动态调整学习率 重点
- 初学MyBatis-Plus
- 合肥工业大学—SQL Server数据库实验五:创建和删除索引
- 分离内核和虚拟机支持安全的关键任务边缘计算
- Java List与ArrayList 的区别(List list =new Arraylist(); ArrayList<String> arrayList = new ArrayList())
- Android Handler sendMessage和 sendMessageDelayed的使用