SpannableStringBuilder的妙用

来源:互联网 发布:淘宝女郎叶青 编辑:程序博客网 时间:2024/06/08 04:31

好久没写博客了,我们的项目忙完了,现在做下总结,我最大的收获也就是这个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
原创粉丝点击