分段给TextView设置多种颜色

1. 概述

在开发中,有时候会遇到给一个TextView设置多种颜色,效果图如下图中的红色框


分段给TextView设置多种颜色_第1张图片
图片.png

一般实现方式有3种:
1>:针对不同颜色TextView,直接搞多个TextView;
2>:使用SpannableString来实现:可以给多个文字设置不同的颜色,特点是字符串长度必须固定,字符角标必须指定,这个就是它的局限性;
3>:使用Html.fromHtml(str):特点是字符串长度不需要固定,比如是服务器返回的数据都可以;

2. 具体实现如下

1>:针对不同颜色TextView,直接搞多个TextView:


 
    
 
        
 
        
 
        
 
        
    
 
    
 
        
 
        
 
        
 
        
 
        
    
 

2>:使用SpannableString来实现:
图片.png
SpannableStringBuilder style = new SpannableStringBuilder("备注:签收人(张三)"); 
// 给多个文字设置不同颜色
style.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.RED), 7, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

//设置字体大小,true表示前面的字体大小20单位为dip
spannableString.setSpan(new AbsoluteSizeSpan(20, true), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置链接
spannableString.setSpan(new URLSpan("www.baidu.com"), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置字体,BOLD为粗体
spannableString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
3>:使用Html.fromHtml(str):
String str2=String.format("状态 :%s", "需要设置颜色的字符串");
mCountdownTimeTV.setText(Html.fromHtml(str2));
3. 总结

开发中,一般直接用第三种即可,简单

你可能感兴趣的