Android布局中动态修改TextView等控件中文字的颜色
2017-08-07 17:10
651 查看
在Android界面展示信息时,有时我们需要相近或相邻的文字显示不同的文本格式,这时该怎么办呢?我们有至少两种办法:
添加多个控件
在控件修改局部文本
今天我们来谈一下如何在控件中修改局部文本。
void setSpan(Object what,int start,int end,int flags)
函数作用:可以给SpannableStringBuilder设置特殊的文本样式,比如文字颜色、背景颜色、超链接、样式、删除线、下划线等。
参数说明:
第一个参数what:样式span (测量 测绘)
第二、第三个参数start-end:样式改变的起始和终止索引(从0开始)。需要注意的是1,3表示的是[1,3)的意思,即从索引1开始,在索引3之前停止
第四个参数flags:是否影响前后插入的文本,EXCLUSIVE和INCLUSIVE分别表示不影响和影响,两两组合可以形成4种参数,分别为:
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 前后均无影响
Spannable.SPAN_EXCLUSIVE_INCLUSIVE 只后影响
Spannable.SPAN_INCLUSIVE_EXCLUSIVE 只前影响
Spannable.SPAN_INCLUSIVE_INCLUSIVE 前后均影响
效果图如下:
当然,还有更多可选的Span类型,具体的大家参考官方API吧~
添加多个控件
在控件修改局部文本
今天我们来谈一下如何在控件中修改局部文本。
1、SpannableStringBuilder类
我们要用到SpannableStringBuilder这个类,这是一个内容和标记都可以更改的文本类,它与SpannableString的关系类似于StringBuilder和String的关系,比如前者可以利用append方法去动态改变相应对象的内容。2、Span方法
SpannableStringBuilder的setSpan()方法:void setSpan(Object what,int start,int end,int flags)
函数作用:可以给SpannableStringBuilder设置特殊的文本样式,比如文字颜色、背景颜色、超链接、样式、删除线、下划线等。
参数说明:
第一个参数what:样式span (测量 测绘)
第二、第三个参数start-end:样式改变的起始和终止索引(从0开始)。需要注意的是1,3表示的是[1,3)的意思,即从索引1开始,在索引3之前停止
第四个参数flags:是否影响前后插入的文本,EXCLUSIVE和INCLUSIVE分别表示不影响和影响,两两组合可以形成4种参数,分别为:
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 前后均无影响
Spannable.SPAN_EXCLUSIVE_INCLUSIVE 只后影响
Spannable.SPAN_INCLUSIVE_EXCLUSIVE 只前影响
Spannable.SPAN_INCLUSIVE_INCLUSIVE 前后均影响
3、举例说明
SpannableStringBuilder builder //设置文字颜色Span ForegroundColorSpan Span1 = new ForegroundColorSpan(Color.RED); //设置背景颜色Span BackgroundColorSpan Span2 = new BackgroundColorSpan(Color.YELLOW); //设置超链接Span URLSpan Span3 = new URLSpan("wwww.baidu.com"); //设置文本样式之字体Span AbsoluteSizeSpan Span4 = new AbsoluteSizeSpan(80); //设置删除线Span StrikethroughSpan Span5 = new StrikethroughSpan(); //设置下划线Span UnderlineSpan Span6 = new UnderlineSpan(); builder.setSpan(Span1,0,1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span2,1,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span3,2,3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span4,3,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span5,4,5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(Span6,5,6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.setText(builder);
效果图如下:
当然,还有更多可选的Span类型,具体的大家参考官方API吧~
相关文章推荐
- android 动态修改textView颜色大小的两种方式
- Android动态布局,并动态为TextView控件设置drawableLeft、drawableRight等属性添加图标
- Android 动态修改TextView 颜色Color
- Android动态布局,并动态为TextView控件设置drawableLeft、drawableRight等属性添加图标
- Android UI 控件--(multi)AutoCompleteTextView、查看原文件、修改颜色
- Android动态布局,并动态为TextView控件设置drawableLeft、drawableRight等属性加入图标
- Android+HTML 针对android一个控件TextView中文字颜色、大小不同的解决方案
- Android动态改变TextView字体颜色
- [Android UI界面] 如何在activity中动态的设置TextView上字体的颜色
- Android动态改变TextView字体颜色
- 给一个android的TextView设置背景颜色动态显示,到那时好像不起作用。我是少了什么东西么?
- android动态布局:用java代码实现LinearLayout以及TextView
- android基础学习(2)-------修改TextView字体颜色和背景颜色
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- Android Button及TextView动态变换颜色
- Android Button及TextView动态变换颜色
- android 动态修改textview背景
- Android TextView中文字设置超链接、颜色、字体
- android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片
- android-修改TextView中部分文字的颜色