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

xiaoxiao2021-02-28  88

在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吧~

转载请注明原文地址: https://www.6miu.com/read-59675.html

最新回复(0)