SpannableString拼接高级用法之SpannableStringBuilder

版权声明:本文为徐代龙原创文章,未经徐代龙允许不得转载。网络资源网站: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);
        }

实现的效果图便是第一张显示的样子。

总结:

尽可能的客服困难去完成需求,要对自己要求严格一点,就会有不一样的收获。

猜你喜欢

转载自blog.csdn.net/xudailong_blog/article/details/86513668