Android 使用SpannableString显示不同样式的textview




最近发现了一个比较方便显示不同颜色的textview的类。


先看效果图 : 


很多人可能觉得这个是俩个textview显示的不同样式的文本,其实不然,这是一个textview,由于这段文字除了颜色不同,其他属性均一致。所以我就使用

SpannableString这个类来对这个textview中显示的文字进行修改颜色。


首先我们先看一下这个类是干嘛的。


/**
 * This is the class for text whose content is immutable but to which
 * markup objects can be attached and detached.
 * For mutable text, see {@link SpannableStringBuilder}.
 */


/*
 *这是文本的类,内容是不可变的,但是
*标记对象可以 *附加和分离。
*可变的文本,看到{@链接 *spannablestringbuilder }。
 */
public class SpannableString
extends SpannableStringInternal
implements CharSequence, GetChars, Spannable
{
    public SpannableString(CharSequence source) {
        super(source, 0, source.length());
    }


    private SpannableString(CharSequence source, int start, int end) {
        super(source, start, end);
    }


    public static SpannableString valueOf(CharSequence source) {
        if (source instanceof SpannableString) {
            return (SpannableString) source;
        } else {
            return new SpannableString(source);
        }
    }


    public void setSpan(Object what, int start, int end, int flags) {
        super.setSpan(what, start, end, flags);
    }


    public void removeSpan(Object what) {
        super.removeSpan(what);
    }


    public final CharSequence subSequence(int start, int end) {
        return new SpannableString(this, start, end);
    }
}


源码很少(感觉所有开源源码都很少...),至于具体怎么实现的先不细说了,但是就这段代码来看,这个类不是一个静态类,需要我们自己new,并且这个类只有俩个方法,见名知意,一个setSpan(),一个removeSpan()。顾名思义一个是set这个span样式的方法,一个是移除样式。


  ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#404f68"));


这里使用 ForegroundColorSpan来进行一个颜色的修改。只需new这个对象在构造中加入一个Color的颜色值。


 SpannableString spannableStringAdress = new SpannableString("位置:  " + isPermission);

        spannableStringAdress.setSpan(colorSpan, 3, spannableStringAdress.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

/ / 第一个参数为颜色,第二个为起始位置,第三个为样式停止位置,第四个参数为flag,(具体这个flag有什么区别还有待研究)

textview.setText(spannableStringAdress);


这样就可以实现效果图中,一个textview显示不同颜色的文本,在此中还可对选中颜色设置点击事件。


下次在写关于点击事件的实现,及源码解析。


  **-------------------------**    

:当你想丢点什么的时候请注意,千万别丢脸,人活着最重要的是尊严。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值