给TextView加上多彩效果:改变部分字体的大小和颜色
转载请注明出处: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的类继承关系图:
CharacterStyle
extends Object
| java.lang.Object | |
| ↳ | android.text.style.CharacterStyle |
Known Direct Subclasses
|
Known Indirect Subclasses
|
效果图
上面效果的代码
- 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)))来使其生效
给TextView加上多彩效果:改变部分字体的大小和颜色的更多相关文章
- 【MFC系列】MFC快速设置控件文本字体、大小、颜色、背景
以静态文本为例,分享一下怎么修改文本字体.大小.颜色.背景等参数.其他文本.控件等可参照修改. 1.修改字体.大小 这个很简单,首先在Dlg类中声明一个CFont类型的成员变量: 然后在类的初始化函数 ...
- 改变导航栏title字体的大小和颜色
方法一:自定义视图的方法 就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了. //自定义标题视图 UILabel *title ...
- 一个字体,大小,颜色可定义的自绘静态框控件-XColorStatic 类(比较好看,一共19篇自绘文章)
翻译来源:https://www.codeproject.com/Articles/5242/XColorStatic-a-colorizing-static-control XColor Stati ...
- iOS之改变UIAlertViewController字体的颜色
NSString *message = @"请确认信息是否正确?"; NSString *title = @"提示"; UIAlertController *a ...
- 如何改变Xcode字体大小?
运行Xcode后依次点击左上角Xcode/Preferences/Fonts & Colors里就可以调整,在右边随便点中一个字体就可以调整这个字体的大小和颜色了,按command+a可以将所 ...
- Android在一个TextView里显示不同样式的字体
在同一个TextView里显示不同样式的字体 public void setSpan(Object what, int start, int end, int flags); 样式1:背景色.粗体.字 ...
- SpannableString实现TextView的链接效果
SpannableString实现TextView的链接效果 一.简介 TextView使用SpannableString设置复合文本TextView通常用来显示普通文本,但是有时候需要对其中某些文本 ...
- Android设置不被系统设置改变的字体大小
原因 从4.0开始,系统设置中“显示”可以对字体大小进行配置,这会影响到TextView等控件中文字显示的大小. 解决方案 在自定义的Activity中重写getResources方法 @Overri ...
- 微软雅黑字体IE6 opacity改变,字体会变样子
微软雅黑字体IE6 opacity改变,字体会变样子,换个字体就好了
随机推荐
- Selenium常用操作汇总二——如何操作select下拉框
下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选 ...
- UltraCompare 激活
UltraCompare安装包.注册机下载地址: 链接:https://pan.baidu.com/s/1eSu8Pbk 密码:fkkh 1.安装UltraCompare 2. 3. 打开注册机,填入 ...
- Mac 创建证书(以 创建gdb证书 为例 )
open /Applications/Utilities/Keychain\ Access.app/ 打开 钥匙串访问 继续继续 创建完毕. Now that we have a certificat ...
- Prolog学习:数独和八皇后问题
上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...
- django学习1
参考资料:http://www.cnblogs.com/feixuelove1009/p/5910384.html#top 本学习只在记录过程,需要更全面的资料,可直接上参考资料细看. django版 ...
- 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
1.导入以前的项目(Markers中注意查看,就在console选项卡旁边),报以下错误,但不影响操作: Description Resource Path Location TypeTarget r ...
- Java并发笔记-未完待续待详解
为什么需要并行? – 业务要求 – 性能 并行计算还出于业务模型的需要 – 并不是为了提高系统性能,而是确实在业务上需要多个执行单元. – 比如HTTP服务器,为每一个Socket连接新建一个处理线程 ...
- eclipse debug 执行到断点处并没有停下,断点无效问题
转自:http://blog.csdn.net/cuidiwhere/article/details/14434439 现象: 利用eclipse debug时,执行到断点处并没有停下.正常情况下,在 ...
- C# wkhtmltopdf 将html转pdf
一.转换程序代码如下: public string HtmlToPdf(string url) { bool success = true; // string dwbh = url.Split('? ...
- 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践
5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践 进入编辑模式 小写i在当前字符前插入 大写I 在光标所在行的行首插入 大写O 在光标上面一行插入编辑 小写o在光标下面一行插入编辑 小 ...
Known Direct Subclasses