给TextView加上多彩效果:改变部分字体的大小和颜色
2015-07-24 18:45
621 查看
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/18363899
在实际使用中,有时候会遇到特殊需求,比如pm突发奇想,想把TextView的某几个字变的大一点,再加点颜色,这貌似不好搞,如果是给TextView整体加效果就很好搞了。但是问题总是要解决,下面我给出解决方法,其实方法很简单,问题在于你是否知道有这种方法。
1、 字体颜色可以采用font,也可以使用ColorSpan
2、 字体大小可以使用<big>、<small>和 <h1>到<h6>的标签,还可以采用SizeSpan
3、 Spannable功能比较全面,调用setSpan即可为TextView设置美丽的特效,其支持的特效在CharacterStyle中定义,有好多种,比如AbsoluteSizeSpan、ForegroundColorSpan以及BackgroundColorSpan等,具体大家可以根据需要查看,下面是CharacterStyle的类继承关系图:
public abstract class
extends Object
前言
在实际使用中,有时候会遇到特殊需求,比如pm突发奇想,想把TextView的某几个字变的大一点,再加点颜色,这貌似不好搞,如果是给TextView整体加效果就很好搞了。但是问题总是要解决,下面我给出解决方法,其实方法很简单,问题在于你是否知道有这种方法。
方法:
1、 字体颜色可以采用font,也可以使用ColorSpan2、 字体大小可以使用<big>、<small>和 <h1>到<h6>的标签,还可以采用SizeSpan
3、 Spannable功能比较全面,调用setSpan即可为TextView设置美丽的特效,其支持的特效在CharacterStyle中定义,有好多种,比如AbsoluteSizeSpan、ForegroundColorSpan以及BackgroundColorSpan等,具体大家可以根据需要查看,下面是CharacterStyle的类继承关系图:
public abstract class
CharacterStyle
extends Objectjava.lang.Object | |
? | android.text.style.CharacterStyle |
Known Direct SubclassesBackgroundColorSpan, ClickableSpan, ForegroundColorSpan, MaskFilterSpan, MetricAffectingSpan, RasterizerSpan, StrikethroughSpan, SuggestionSpan,UnderlineSpan |
Known Indirect SubclassesAbsoluteSizeSpan, DynamicDrawableSpan, ImageSpan, LocaleSpan, RelativeSizeSpan, ReplacementSpan, ScaleXSpan, StyleSpan, SubscriptSpan, SuperscriptSpan,TextAppearanceSpan, TypefaceSpan, URLSpan |
效果图
上面效果的代码
TextView textView1 = (TextView) findViewById(R.id.textView1); TextView textView2 = (TextView) findViewById(R.id.textView2); TextView textView3 = (TextView) findViewById(R.id.textView3); TextView textView4 = (TextView) findViewById(R.id.textView4); //两次加大字体,设置字体为红色(big会加大字号,font可以定义颜色) textView1.setText(Html.fromHtml("北京市发布霾黄色预警,<font color='#ff0000'><big><big>外出携带好</big></big></font>口罩")); //设置字体大小为3级标题,设置字体为红色 textView2.setText(Html.fromHtml("北京市发布霾黄色预警,<h3><font color='#ff0000'>外出携带好</font></h3>口罩")); //设置字体大小为58(单位为物理像素),设置字体为红色,字体背景为黄色 textView3.setText("北京市发布霾黄色预警,外出携带好口罩"); Spannable span = new SpannableString(textView3.getText()); span.setSpan(new AbsoluteSizeSpan(58), 11, 16, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new ForegroundColorSpan(Color.RED), 11, 16, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new BackgroundColorSpan(Color.YELLOW), 11, 16, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView3.setText(span); //两次缩小字体,设置字体为红色(small可以减小字号) textView4.setText(Html.fromHtml("北京市发布霾黄色预警,<font color='#ff0000'><small><small>外出携带好</small></small></font>口罩"));说明:上述代码分别用不同方式实现了类似的效果,通过对比,我们应该可以理解各种方法的不同,想写出更多效果Spannable是必须的,因为font支持的属性很有限,比如说font不支持size属性,所以请多多了解Spannable。
相关文章推荐
- 一次冗长繁琐的排错经历
- HTML5+CSS3+JQuery打造自定义视频播放器
- OnPageChangeListener.onPageScrolled
- Gym 100637F F. The Pool for Lucky Ones 暴力
- WPF 逻辑树和可视化树
- Swiper滑动Html5手机浏览器自适应
- 网络编程基础知识学习要点记录
- Android 获取view在屏幕中的位置
- JVM垃圾分代回收算法详解
- 算法(第四版)学习笔记之java实现归并排序
- FL2440裸机开发之LED
- android getViewTreeObserver的使用
- Tomcat本地服务器搭建
- sql 语句在数据库取数据(包括图片)
- Vert.x-Web的讲解和使用(二)
- 单调队列--优化dp
- 关于欧拉函数的递推方法的证明
- 黑马程序员——Java基础---GUI
- 日子前的天数
- 微信公众平台DIY文章排版格式