TextViewUtil 的工具类:

import android.text.SpannableString;import android.text.Spanned;import android.text.TextPaint;import android.text.style.ClickableSpan;import android.view.View;import java.util.List;/** * @author CHY *         Create at 2018/6/12 10:51. */public class TextViewUtil {    /**     * 设置字符串中某一关键字的颜色 (无点击事件)     *     * @param content 目标字符串     * @param keyStr  关键字     * @param color   关键字颜色     * @return     */    public static SpannableString setSpanColorStr(String content, String keyStr, final int color) {        SpannableString spannableString = new SpannableString(content);        if (content.contains(keyStr)) {            int startNew = 0;            int startOld = 0;            String temp = content;            while (temp.contains(keyStr)) {                spannableString.setSpan(                        new ClickableSpan() {                            @Override                            public void updateDrawState(TextPaint ds) {                                super.updateDrawState(ds);                                ds.setColor(color);                                ds.setUnderlineText(false);                            }                            @Override                            public void onClick(View widget) {                            }                        }, startOld + temp.indexOf(keyStr),                        startOld + temp.indexOf(keyStr) + keyStr.length(),                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);                startNew = temp.indexOf(keyStr) + keyStr.length();                startOld += startNew;                temp = temp.substring(startNew);            }        }        return spannableString;    }    /**     * 设置字符串中多个不同关键字的颜色(颜色统一, 无点击事件)     *     * @param content 目标字符串     * @param keyStrs 关键字集合     * @param color   单一的颜色值     * @return     */    public static SpannableString setSpanColorStr(String content, List keyStrs, final int color) {        SpannableString spannableString = new SpannableString(content);        for (int i = 0; i < keyStrs.size(); i++) {            String keyStr = keyStrs.get(i);            if (content.contains(keyStr)) {                int startNew = 0;                int startOld = 0;                String temp = content;                while (temp.contains(keyStr)) {                    spannableString.setSpan(                            new ClickableSpan() {                                @Override                                public void updateDrawState(TextPaint ds) {                                    super.updateDrawState(ds);                                    ds.setColor(color);                                    ds.setUnderlineText(false);                                }                                @Override                                public void onClick(View widget) {                                }                            }, startOld + temp.indexOf(keyStr),                            startOld + temp.indexOf(keyStr) + keyStr.length(),                            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);                    startNew = temp.indexOf(keyStr) + keyStr.length();                    startOld += startNew;                    temp = temp.substring(startNew);                }            }        }        return spannableString;    }    /**     * 设置字符串中多个关键字的不同颜色(颜色与关键字一一对应, 无点击事件)     *     * @param content 目标字符串     * @param keyStrs 关键字集合     * @param colors  颜色值的集合     * @return     */    public static SpannableString setSpanColorStr(String content, List keyStrs, final List colors) {        SpannableString spannableString = new SpannableString(content);        for (int i = 0; i < keyStrs.size(); i++) {            String keyStr = keyStrs.get(i);            if (content.contains(keyStr)) {                int startNew = 0;                int startOld = 0;                String temp = content;                while (temp.contains(keyStr)) {                    final int finalI = i;                    spannableString.setSpan(                            new ClickableSpan() {                                @Override                                public void updateDrawState(TextPaint ds) {                                    super.updateDrawState(ds);                                    ds.setColor(colors.get(finalI));                                    ds.setUnderlineText(false);                                }                                @Override                                public void onClick(View widget) {                                }                            }, startOld + temp.indexOf(keyStr),                            startOld + temp.indexOf(keyStr) + keyStr.length(),                            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);                    startNew = temp.indexOf(keyStr) + keyStr.length();                    startOld += startNew;                    temp = temp.substring(startNew);                }            }        }        return spannableString;    }}

 

更多相关文章

  1. Android(安卓)沉浸式状态栏 支持4.4及以上。
  2. Android(安卓)NumberPicker详细使用
  3. 安卓中颜色种类
  4. Android(安卓)Jni NDK 打印log日志
  5. 更改ProgressBar颜色,SwipeBack滑动返回功能。
  6. Android设置StatusBar颜色
  7. android 设置progressbar的背景颜色
  8. Android: R cannot be resolved to a variable
  9. android实现渐变效果

随机推荐

  1. 微信小程序介绍、配置、视图层、逻辑层、
  2. 热烈庆祝!!!经过不懈努力,荣登前八名热门博主
  3. 为何电脑磁盘有的文件突然都看不见了,却
  4. 仿php中文网
  5. 选择器的使用和模块化组件思想
  6. PHP:【微信小程序】微信小程序API,微信小
  7. 请求与响应
  8. 微信小程序数据操作、自定义事件、微信AP
  9. ThinkPhp6.0 vscode 布署
  10. PHP:【微信小程序】微信小程序部分组件,微