TextView局部文字样式美化(SpannableStringBuilder)

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/52100710
附属图片:

具体使用参考文章:
http://www.cnblogs.com/hacjy/p/5124863.html

文字处理工具函数:
 
 
 /**
     * @desc:修改textView样式
     * @author:Arison on 2016/8/3
     */
    public static void textSpanForStyle(
            TextView view,
            String input,
            String match,
            int color) {
        SpannableStringBuilder style=new SpannableStringBuilder(input);
        Pattern highlight = Pattern.compile(match);
        Matcher m = highlight.matcher(style.toString());
        while (m.find()) {
            style.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), m.start(), m.end(),
                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            style.setSpan(new ForegroundColorSpan(color), m.start(), m.end(),
                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
//            style.setSpan(new StrikethroughSpan(), m.start(), m.end(), 
//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            style.setSpan(new UnderlineSpan(), m.start(), m.end(),
                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        }
        view.setText(style);
    }


    /**
     * @desc:修改textView样式  批量修改
     * @author:Arison on 2016/8/3
     */
    public static void textAarrySpanForStyle(
            TextView view,
            String input,
            String[] match,
            int color) {
        SpannableStringBuilder style=new SpannableStringBuilder(input);
        for (String item:match){
            Pattern highlight = Pattern.compile(item);
            Matcher m = highlight.matcher(style.toString());
            while (m.find()) {
                style.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), m.start(), m.end(),
                        Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                style.setSpan(new ForegroundColorSpan(color), m.start(), m.end(),
                        Spannable.SPAN_INCLUSIVE_INCLUSIVE);
//            style.setSpan(new StrikethroughSpan(), m.start(), m.end(), 
//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                style.setSpan(new UnderlineSpan(), m.start(), m.end(),
                        Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            }
        }
        view.setText(style);
        }
相关文章
|
9月前
|
JavaScript
文本,最简单的文本样式设计风格样式,让Element-UI盒子居中的写法
文本,最简单的文本样式设计风格样式,让Element-UI盒子居中的写法
|
自然语言处理 前端开发 API
改变canvas生成的图片中文本颜色
改变canvas生成的图片中文本颜色
|
XML JavaScript Java
Android实现加载富文本以及SpannableString、SpannableStringBuilder实现部分文字可以点击,更换颜色
Android实现加载富文本以及SpannableString、SpannableStringBuilder实现部分文字可以点击,更换颜色
|
算法 Android开发
文字绘制 | Android 单行,多行文字绘制
文字绘制 | Android 单行,多行文字绘制
文字绘制 | Android 单行,多行文字绘制
|
前端开发
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
268 0
CSS高级技巧——鼠标样式,轮廓,文本域防拖拽,vertical-align 垂直对齐,文字溢出问题
文字到底能玩出多少花样(二)background-clip实现hover文字填充效果
文字到底能玩出多少花样(二)background-clip实现hover文字填充效果
257 0
文字到底能玩出多少花样(二)background-clip实现hover文字填充效果
|
Android开发
Android隐藏Listview和RecyclerView 滑动边界的阴影,去除滚动条加分隔线等
Android隐藏Listview和RecyclerView 滑动边界的阴影,去除滚动条加分隔线等
239 0
|
C#
【WPF】TextBlock文本文字分段显示不同颜色
原文:【WPF】TextBlock文本文字分段显示不同颜色 需求:一行文字中,不同字符显示不同颜色。如注册页面,为表示必填项,在文本最后加一个红色的型号* 目标效果: 方法一: 用< StackPanel >嵌套两个< TextBlock >。
2176 0
|
前端开发 Android开发 Java