Android 实现不同字体颜色的TextView实现代码
时间:2019-03-30
本文章向大家介绍Android 实现不同字体颜色的TextView实现代码,主要包括Android 实现不同字体颜色的TextView实现代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Android 实现不同字体颜色的TextView
遇到的需求,mark一下。
实现代码:
package com.chuck.recyclerviewdemo; import android.content.Context; import android.graphics.Canvas; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import android.widget.TextView; import java.util.List; /** * 项目名称:trunk * 类描述: * 创建人:Administrator * 创建时间:2015/12/10 14:05 * 修改人:Administrator * 修改时间:2015/12/10 14:05 * 修改备注: */ public class DifferentColorTextView extends TextView{ public DifferentColorTextView(Context context) { super(context); } public DifferentColorTextView(Context context, AttributeSet attrs) { super(context, attrs); } public DifferentColorTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } public void setDifferentColorText(List<String> text,List<Integer>colors){ setText(calculateResidue(text,colors)); } /**显示不同颜色*/ private SpannableStringBuilder calculateResidue(List<String> text, List<Integer>colors) { if(text==null||colors==null){ return null; } StringBuilder sb =new StringBuilder(); for (int i=0;i<text.size();i++){ sb.append(text.get(i)); } SpannableStringBuilder ssb=new SpannableStringBuilder(sb.toString()); int begin=0; for (int i=0;i<text.size();i++){ ForegroundColorSpan mSpan = new ForegroundColorSpan(colors.get(i)); ssb.setSpan(mSpan,begin,begin+text.get(i).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); begin=begin+text.get(i).length(); } return ssb; } }
实现同一textView,不同颜色。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- 3223: Tyvj 1729 文艺平衡树
- 1212: [HNOI2004]L语言
- POJ 2942Knights of the Round Table(tarjan求点双+二分图染色)
- 算法模板——平衡树Treap
- Java并发编程
- 算法模板——线段树2(区间加+区间乘+区间求和)
- 1798: [Ahoi2009]Seq 维护序列seq
- 【LeetCode 389】 关关的刷题日记30 Find the Difference
- 1708: [Usaco2007 Oct]Money奶牛的硬币
- 1856: [Scoi2010]字符串
- 【LeetCode 409】 关关的刷题日记31Longest Palindrome
- Git的奇技淫巧?
- 3224: Tyvj 1728 普通平衡树
- 【LeetCode 136】 关关的刷题日记32 Single Number
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 干货 | 携程基于Quasar协程的NIO实践
- 【python-opencv】图像上的算术运算
- 个人珍藏的80道多线程并发面试题(11-20答案解析)
- 【python-opencv】性能衡量和提升技术
- 【python-opencv】转换颜色空间
- 七夕,当然少不了纯CSS的点缀啦
- PHP中的垃圾回收相关函数
- 【python-opencv】图像几何变换
- redis keys和scan命令
- 分数排名
- 【python-opencv】图像平滑
- 逃逸安全的模板沙箱(一)——FreeMarker(上)
- JVM面试题
- 【python-opencv】形态转换
- Netgear Nighthawk R8300 upnpd PreAuth RCE 分析与复现