版权声明:本文为徐代龙原创文章,未经徐代龙允许不得转载。网络资源网站:xudailong.cc 福利网站:www.00reso.com 公众号:蛇崽网盘教程资源 https://blog.csdn.net/xudailong_blog/article/details/86513668
在项目中可能会出现一下的需求
显然这里用多个textview来显示文本内容是不可行的,但是在Android里面有一个比较好用的类:SpannableString
我们可以这样子使用:
String content="预祝党的十九大完美谢慕";
SpannableStringBuilder stringBuilder=new SpannableStringBuilder(content);
ForegroundColorSpan foregroundColorSpan=new ForegroundColorSpan(Color.parseColor("#FF4040"));
stringBuilder.setSpan(foregroundColorSpan,0,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(stringBuilder);
效果如下:
但是因为我的项目里因为自定义表情的解析,有用到SpannableString
,因为textview
只能设置一次,所以这里我就有用到SpannableStringBuilder
这个类,好比java中的string类比与stringbuild。
下面是具体的项目代码:
if (TextUtils.isEmpty(answer_name)) {
SpannableString spannableString = EmojiConversionUtils.getInstance().getExpressionString(context, spannableStr);
viewHolder.tvContent.setText(spannableString);
} else {
String str1 = "回复@" + answer_name + ":";
SpannableStringBuilder span1 = new SpannableStringBuilder(str1);
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(context.getResources().getColor(R.color.main_title_bg_color));
span1.setSpan(foregroundColorSpan, 2, str1.length() - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString spannableString = EmojiConversionUtils.getInstance().getExpressionString(context, spannableStr);
span1.append(spannableString);
viewHolder.tvContent.setText(span1);
}
实现的效果图便是第一张显示的样子。
总结:
尽可能的客服困难去完成需求,要对自己要求严格一点,就会有不一样的收获。