SpannableStringBuilder实现一个控件字体不同的字体风格

写给自己的话:如果只是为了解决眼前的问题去百度去google而应急这本身没错,但是如果只是救了急而不去消化掉,那永远也不可能进步,多勤于总结消化吸收才能更快的进步.


最近在做一个商城类项目,注册时需要弹出一些信息,但是内容又是不一样的颜色,大小,刚开始是打算使用Html标签来写,通过TextView.setText(Html.fromHtml("内容"))来写的,但是由于标签学的很烂,这么简单的标签都没写出来,偶然的关系看到关注的郭大神的公众号推送了SpannableStringBuilder这个类,当然同时也了解到了SpannableString这个类,可谓收益匪浅呀,下面就来展示一下实现的效果,这里只看核心的功能,由于只是一个介绍核心功能的小demo,所以布局代码尽量做到简单,以便一看就懂.需要其它的可以再加入:



1:首先上布局,这里是一个TextView,当然EditText也是可以的,可以试一下:

<TextView
        android:gravity="center"
        android:id="@+id/tv"
        android:layout_width="200dp"
        android:layout_height="200dp" />


2:代码如下:

TextView textView = (TextView) findViewById(R.id.tv);

        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
        spannableStringBuilder.append("提示\n请确认上家邀请码是:1\n请确认上家昵称是:田田");

        //这里支持其它颜色设置方式,比如16进制的Color.parseColor("#ff0000")
        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.RED);
        ForegroundColorSpan foregroundColorSpan1 = new ForegroundColorSpan(Color.parseColor("#ff0000"));

        //设置绝对字体大小(单位是像素),还有相对字体大小
        AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(40);
        AbsoluteSizeSpan absoluteSizeSpan2 = new AbsoluteSizeSpan(60);
        AbsoluteSizeSpan absoluteSizeSpan3 = new AbsoluteSizeSpan(60);
        //将设置的属性添加给TextView的内容
        //第一个参数就是上面的颜色属性,
        //2是从index为2的字符开始
        //8是把这个属性应用到第7个结束,包含头不包含尾
        //第四个值一共有4个常量,可以一一试试看代表什么意思
        spannableStringBuilder.setSpan(foregroundColorSpan, 13, 14, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(foregroundColorSpan1, 24, 26, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        spannableStringBuilder.setSpan(absoluteSizeSpan, 13, 14, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(absoluteSizeSpan2, 0, 2, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(absoluteSizeSpan3, 24, 26, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        textView.setText(spannableStringBuilder);


还有很多属性介绍,大家可以自己试试.
参考博客:http://blog.csdn.net/harvic880925/article/details/38984705

 http://www.jianshu.com/users/769d3d3a9d4b



Demo:https://github.com/Tom1991/SpannableStringBuilder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值