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

来源:互联网 发布:淘宝衣服代购靠谱吗 编辑:程序博客网 时间:2024/05/28 15:55

写给自己的话:如果只是为了解决眼前的问题去百度去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

0 0
原创粉丝点击