SpannableStringBuilder的妙用

好久没写博客了,我们的项目忙完了,现在做下总结,我最大的收获也就是这个SpannableStringBuilder。首先,小弟向各位大神介绍下SpannableStringBuilder有哪些好用的地方:


1.可以设置TextView中字体的颜色

2.可以在TextView的文字中间插入一张图片


看了上面两点,如果你想到的第一种办法是写一个自定义控件,那么你跟我想的一样,哈哈。不过这里我要用SpannableStringBuilder,一个更好用的控件。

下面贴下我的代码:

<span style="font-size:14px;">private void drawTextView() {
        // 需要处理的文本,[icon]是需要被替代的文本
        String text = mTextView.getText().toString().trim();
        if (TextUtils.isEmpty(text)) {
            return;
        }

        int start = 2;
        String label = "[icon]";

        if (text.length() >= start) {
            Drawable drawable = getResources().getDrawable(R.drawable.ic_yzt);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

            StringBuffer buffer = new StringBuffer(text);
            buffer = buffer.insert(start, label);
            SpannableStringBuilder spannable = new SpannableStringBuilder(buffer);

            int length = buffer.length();

            // 高亮蓝色
            CharacterStyle colorSpan = new ForegroundColorSpan(getResources().getColor(R.color.onebill_blue));
            spannable.setSpan(colorSpan, start + label.length(), length - 2,
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            //高亮白色 CharacterStyle不能被多个字段所公用
            CharacterStyle colorSpanWhite1 = new ForegroundColorSpan(getResources().getColor(R.color.color_transparent_hint_withe));
            CharacterStyle colorSpanWhite2 = new ForegroundColorSpan(getResources().getColor(R.color.color_transparent_hint_withe));
            spannable.setSpan(colorSpanWhite1, 0, start,
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            spannable.setSpan(colorSpanWhite2, length - 2, length,
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            // 图片
            CharacterStyle imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
            spannable.setSpan(imageSpan, start, start + label.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

            <span style="font-family:Arial, Helvetica, sans-serif;">mTextView</span>.setText(spannable);
        }
    }</span>

好了 这里用到了几个好用的东西:

<span style="font-size:14px;">首先设置下CharacterStyle,然后spannable.setSpan设置部分字体颜色。 </span>
<span style="font-size: 14px;">插入图片的话,new一个ImageSpan,然后sapnnable.setSpan插入其中。</span>
<span style="font-size: 14px;">最后mTextView设置下text,到这里我们就大功告成了。</span>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值