网上有很多类似的资源,我今天只是记录在掘金里面,方便以后查看,复习一些学习过的资源。
我们在工作开发中,肯定有需求,需要对String一段文字进行自定义样式,比如需要特殊的字符的颜色,还有,特殊字符大写要求,以前的处理方式大约是写多个Textview或者自定义的view。
现在用SpannableString这个工具类就可以做到了。
1.当需要对字符串某一段文字大小进行设置时:
SpannableString string =new SpannableString(str);
if(str.contains(".")){
string.setSpan(new AbsoluteSizeSpan(size),start,end, flags);
return string;
}else{
return str;
}但是,现在有一个问题我必须知道文字的start位置和end位置。如果想要遍历所有的字符并改变大小可以。
private SpannableString text1(int color, String text, String password) {
SpannableString ss = new SpannableString(text);
Pattern p = Pattern.compile("\\d+");
Matcher match = p.matcher(text);
while (match.find()) {
int start = match.start();
int end = match.end();
ss.setSpan(new AbsoluteSizeSpan(size), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return ss;
}以上通过正则表达式,匹配所有数字并改变大小。
如图想改变文字的颜色,就用ForegroundColorSpan()里面传一个ColorInt颜色就好了。
顺便在付上Spannable的几种状态值。
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。