【Android 】TextView 局部文字变色
2017-03-19 13:37
811 查看
TextView 对于富文本效果的实现支持不支持呢?比如“局部文字颜色的变动”,“局部字体的变动”
一、需求效果
二、解决方案
针对这类问题,Android提供了 SpannableStringBuilder,方便我们自定义富文本的实现。
除了上述代码中使用的 ForegroundColorSpan 和 BackgroundColorSpan之外,还有以下这些Span可以使用:
AbsoluteSizeSpan(int size) —— 设置字体大小,参数是绝对数值,相当于Word中的字体大小
RelativeSizeSpan(float proportion) —— 设置字体大小,参数是相对于默认字体大小的倍数,比如默认字体大小是x, 那么设置后的字体大小就是x*proportion,这个用起来比较灵活,proportion>1就是放大(zoom in), proportion<1就是缩小(zoom out)
ScaleXSpan(float proportion) —— 缩放字体,与上面的类似,默认为1,设置后就是原来的乘以proportion,大于1时放大(zoon in),小于时缩小(zoom out)
BackgroundColorSpan(int color) —— 背景着色,参数是颜色数值,可以直接使用android.graphics.Color里面定义的常量,或是用Color.rgb(int, int, int)
ForegroundColorSpan(int color) —— 前景着色,也就是字的着色,参数与背景着色一致
TypefaceSpan(String family) —— 字体,参数是字体的名字比如“sans”, “sans-serif”等
StyleSpan(Typeface style) —— 字体风格,比如粗体,斜体,参数是android.graphics.Typeface里面定义的常量,如Typeface.BOLD,Typeface.ITALIC等等。StrikethroughSpan—-如果设置了此风格,会有一条线从中间穿过所有的字,就像被划掉一样
三、动手试试
比如实现下图中TextView的样式
仿照上面的写法,代码很少就出来啦:
原文地址:
http://blog.csdn.net/u010983881/article/details/52383539?locationNum=2&fps=1
一、需求效果
二、解决方案
针对这类问题,Android提供了 SpannableStringBuilder,方便我们自定义富文本的实现。
textView = (TextView) findViewById(R.id.textview); SpannableStringBuilder builder = new SpannableStringBuilder(textView.getText().toString()); //ForegroundColorSpan 为文字前景色,BackgroundColorSpan为文字背景色 ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED); ForegroundColorSpan whiteSpan = new ForegroundColorSpan(Color.WHITE); ForegroundColorSpan blueSpan = new ForegroundColorSpan(Color.BLUE); ForegroundColorSpan greenSpan = new ForegroundColorSpan(Color.GREEN); ForegroundColorSpan yellowSpan = new ForegroundColorSpan(Color.YELLOW); builder.setSpan(redSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(whiteSpan, 1, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE); builder.setSpan(blueSpan, 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(greenSpan, 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(yellowSpan, 4,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(builder);
除了上述代码中使用的 ForegroundColorSpan 和 BackgroundColorSpan之外,还有以下这些Span可以使用:
AbsoluteSizeSpan(int size) —— 设置字体大小,参数是绝对数值,相当于Word中的字体大小
RelativeSizeSpan(float proportion) —— 设置字体大小,参数是相对于默认字体大小的倍数,比如默认字体大小是x, 那么设置后的字体大小就是x*proportion,这个用起来比较灵活,proportion>1就是放大(zoom in), proportion<1就是缩小(zoom out)
ScaleXSpan(float proportion) —— 缩放字体,与上面的类似,默认为1,设置后就是原来的乘以proportion,大于1时放大(zoon in),小于时缩小(zoom out)
BackgroundColorSpan(int color) —— 背景着色,参数是颜色数值,可以直接使用android.graphics.Color里面定义的常量,或是用Color.rgb(int, int, int)
ForegroundColorSpan(int color) —— 前景着色,也就是字的着色,参数与背景着色一致
TypefaceSpan(String family) —— 字体,参数是字体的名字比如“sans”, “sans-serif”等
StyleSpan(Typeface style) —— 字体风格,比如粗体,斜体,参数是android.graphics.Typeface里面定义的常量,如Typeface.BOLD,Typeface.ITALIC等等。StrikethroughSpan—-如果设置了此风格,会有一条线从中间穿过所有的字,就像被划掉一样
三、动手试试
比如实现下图中TextView的样式
仿照上面的写法,代码很少就出来啦:
TextView tv = (TextView)view.findViewById(R.id.toast_text); String str1 = "提交成功!\n积分"; String str2 = "+" + score1; String str3 = "!审核通过后再"; String str4 = "+" + score2; SpannableStringBuilder builder = new SpannableStringBuilder(str1 + str2 + str3 + str4 + "!"); bui c3d7 lder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")), str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffa200")), (str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); tv.setText(builder);
原文地址:
http://blog.csdn.net/u010983881/article/details/52383539?locationNum=2&fps=1
相关文章推荐
- 【Android 】TextView 局部文字变色
- Android文字局部变色 TextView文字部分变色代码
- 【Android 】TextView 局部文字变色
- Android TextView文字局部变色方法
- Android—解决局部textview声明final后无法改变文字的办法
- Android TextView 部分文字变色添加点击事件
- android 文字图片混排,在一个TextView中显示文字穿插图片,文字变色效果
- android TextView 部分文字变色 工具类
- android中TextView 添加ClickableSpan后点击选中文字背景变色问题
- Android TextView文字过多,添加滚动条
- Android TextView文字链接4中方法
- Android 怎么旋转TextView文字显示方向
- 解决:android TextView上响应部分文字的事件
- android 把TextView中的文字添加阴影效果
- Android TextView(EditView)文字底部或者中间 加横线
- android TextWatcher 监听textview和edittext的文字输入改变
- Android之TextView实现文字过长时省略部分或者滚动显示
- android--设置TextView部分文字的颜色和背景(高亮显示)
- Android TextView(EditView)文字底部或者中间 加横线
- Android基础教程(一)之------更改与显示文字标签TextView标签的使用