转载请注明出处: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
CharacterStyle
extends
Object
Known Direct Subclasses
|
Known Indirect Subclasses
AbsoluteSizeSpan, 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。也许有时候我们想把文本加到xml里面,这也是可以的,只不过有一点我们需要注意,那就是要对<、>、'、"这四个字符进行转换,因为它们四个是HTML的标签。具体来说,左括号<要用<代替,右括号>要用>代替,单引号和双引号要用\进行转义。这里给出一个示例,其效果和上面代码中的效果是一致的:<string name="text">北京市发布霾黄色预警,<font color=\'#ff0000\'><big><big>外出携带好</big></big></font>口罩</string>,另外,你必须显式地调用textView.setText(Html.fromHtml(getString(R.string.text)))来使其生效。
分享到:
相关推荐
Android 一个TextView中设置不同字体大小和颜色
本人封装的一个工具类,可对textview中的部分字体修改颜色和大小。希望对大家有所帮助! 有四个构造方法,可以改变字体大小和颜色或者默认TextView本身的颜色大小都可以!! 代码中都写又详细的注释!
代码动态改变某些textview文本颜色及其大小的方式.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
本人封装的一个工具类,可对textview和EditText中的部分字体修改颜色和大小。希望对大家有所帮助! 有四个构造方法,可以改变字体大小和颜色或者默认TextView本身的颜色大小都可以!! 代码中都写又详细的注释!
当TextView中字符过多时,会动态的改变字体大小以其适应TextView的大小,不会导致换行显示或超出TextView的大小而看不见
TextView循环改变大小的跑马灯效果
TextView的字体自适应控件的大小,根据网上的EditView的例子更改而来
关于TextView指定部分文字改变颜色,和指定部分文字点击事件的实现。
本文实例讲述了Android编程中TextView字体属性设置方法(大小、字体、下划线、背景色)。分享给大家供大家参考,具体如下: import android.content.Context; import android.graphics.Color; import android.text....
一个textview里设置多种字体颜色,并添加图片
部分textview字体颜色不同ColorPhrase-master.zip
如果我们的应用需要显示时间,可能首先想到大街上LED显示的绿色的发光字体, 想到 使用时钟控件显示时间,这种效果,我们用 TextView 就可以实现。具体看博客说明:编辑文章 - 博客频道 - CSDN.NET ...
自定义textview字体闪烁效果,代码简单易懂
实现textview字体颜色的渐变显示
Android SpannableString实现TextView不同大小文字居中显示。
当TextView中字符过多时,会动态的改变字体大小以其适应TextView的大小,不会导致换行显示或超出TextView的宽度
(原创)代码动态改变某些textview文本颜色及其大小的方式
android实现TextView文字部分渐变色;LinearGradientFontSpan SpannableString