给TextView加上多彩效果:改变部分字体的大小和颜色
来源:互联网 发布:傲剑绿色版紫霞数据 编辑:程序博客网 时间:2024/05/16 15:22
前言
在实际使用中,有时候会遇到特殊需求,比如pm突发奇想,想把TextView的某几个字变的大一点,再加点颜色,这貌似不好搞,如果是给TextView整体加效果就很好搞了。但是问题总是要解决,下面我给出解决方法,其实方法很简单,问题在于你是否知道有这种方法。
方法:
1、 字体颜色可以采用font,也可以使用ColorSpan
2、 字体大小可以使用<big>、<small>和 <h1>到<h6>的标签,还可以采用SizeSpan
3、 Spannable功能比较全面,调用setSpan即可为TextView设置美丽的特效,其支持的特效在CharacterStyle中定义,有好多种,比如AbsoluteSizeSpan、ForegroundColorSpan以及BackgroundColorSpan等,具体大家可以根据需要查看,下面是CharacterStyle的类继承关系图:
CharacterStyle
extends Object效果图
上面效果的代码
- 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>口罩"));
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加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- TextView改变部分字体的大小和颜色
- 改变TextView部分字体的大小和颜色
- 改变textview的部分字体和颜色
- TextView改变部分字体的大小和颜色及首行缩进
- android开发之改变TextView部分字体的颜色和大小工具类
- android TextView改变部分字体的颜色,大小,设置部分字体有点击事件
- 改变textview部分字体颜色
- WebDriver中执行JavaScript
- 多线程C调用python api的陷阱
- ThinkPHP3.2.3验证码
- 需要团队
- Windows API GetUserNameEx 函数使用
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- [13]使用 MVC 5 的 EF6 Code First 入门 系列:补充:Deploy to Azure
- js用正则表达式来验证表单(比较齐全的资源),JS正则test()方法
- truncate与delete的区别
- 手把手教你把pomelo客户端组件libpomelo加入cocos2d-x 3.0项目(Windows、Android、IOS平台)
- Android Studio常用快捷键整理
- 【Nginx】Nginx下的Yii部署
- java nio学习(七)
- [Leetcode] 2 - Add Two Numbers