您的位置:首页 > 移动开发 > Android开发

Android布局中动态修改TextView等控件中文字的颜色

2017-08-07 17:10 651 查看
在Android界面展示信息时,有时我们需要相近或相邻的文字显示不同的文本格式,这时该怎么办呢?我们有至少两种办法:

添加多个控件

在控件修改局部文本

今天我们来谈一下如何在控件中修改局部文本。

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