给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改变,字体会变样子,换个字体就好了
随机推荐
- Qt实现探测当前有没有网络连接(Wi-Fi)——QNetworkConfigurationManager.isOnline()
1.只需要探测当前有没有连上Wi-Fi(不用获取网络状态),可以调用<QNetworkConfigurationManager>类. QNetworkConfigurationManage ...
- 使 Finder 显示 文件夹路径
显示路径: cd ~ defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE killall Finder 不显示路径: ...
- JAVA对于程序的运行的一种解说
main方法,正如注释所说,这是程序开始执行的第一行.对于一个Java应用程序来说,main方法是必需的,Java解释器在没有生成任何对象的情况下,以main作为入口来执行程序.每个类中可以定义多个方 ...
- JAVA组成原理及使用方法编辑环境及实现过程
JAVA组成原理一.由四方面组成:1.Java编程语言2.Java类文件格式3.Java虚拟机4.Java应用程序接口 当编辑并运行一个Java程序时,需要同时涉及到这四种方面.二.使用文字编辑软件: ...
- XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证
原文链接:http://kong62.blog.163.com/blog/static/1760923052011319113044653/ 解决办法: 修改注册表2个地方 开始-运行-regedit ...
- DATGRIDVIEW如何不选择第一行,第一列
DataBindingComplete事件中写 ClearSelection();
- UITableView 顶部能够放大的图片
UITableView 顶部能够放大的图片 现在有挺多的应用在 UITableView 顶部加入图片,通过拖拽 UITableView 来实现图片的放大. 对比一下腾讯出品的两款App QQ:可展示更 ...
- windows使用技巧和工具(后面可能更新linux)
*:希望广大网友有什么建议或者好的用法工具.也能够在以下评论. 希望这是一个能够让我们更好工作起来的帖子. 工作也能舒适和开心呢. 想着好久没写过博客了吧.今天就写一篇关于windows的使用的吧.我 ...
- UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数
lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于这 ...
- lsof fuser
使用fuser 或 lsof在一个挂载点中查找已打开的文件 fuser -mv /usr 查看有哪些进程在运行/usr中资源 sync fuser -km /media/usbdisk U盘无法卸载
Known Direct Subclasses