eoe 移动开发者论坛

 找回密码
 加入eoe

QQ登录

只需一步,快速开始

查看: 241|回复: 2
收起左侧

[Android分享] 轻松设置textview中不同的字体颜色和字大小

[复制链接]

签到天数: 10 天

连续签到: 1 天

[LV.3]偶尔看看II

28

主题

314

帖子

1229

e币
发表于 2017-3-15 15:53:21 | 显示全部楼层 |阅读模式

没有eoe的账号,级别还太低,出门如何吹牛逼?

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x
废话不说直接上代码
/**
* @param context
* @param textInColors 需要改变颜色或者大小的内容
* @param content 内容(包含上面)
* @param colors textInColors需要改变的颜色
* @param textSizes textInColors需要改变的字体大小
* @param starIndexes textInColors的起始位置 可以为空
* @param textview 设置内容的控件
* @param textStyle COLOR TEXTSIZE BOTH
* @param isBold 是否显示粗体
*/
public static void setTextInDeffrientStyles(Context context, String[] textInColors, String content, int[] colors, int[] textSizes,
                                            int[] starIndexes, TextView textview, TextStyle textStyle, boolean isBold){
    SpannableStringBuilder sb = new SpannableStringBuilder();
    sb.append(content);
    int length = textInColors.length;
    for(int i=0;i<length;i++){
        String textInColor = textInColors;
        int startIndex = content.indexOf(textInColor);
        if(starIndexes != null)
            startIndex = starIndexes;
        if(startIndex < 0)
            continue;
        int endIndex = startIndex + textInColor.length();
        int stylesLength = textStyle==TextStyle.BOTH?2:1;
        CharacterStyle[] style = new CharacterStyle[stylesLength];
                switch(textStyle){
                    case COLOR:
                        style[0] = new ForegroundColorSpan(context.getResources().getColor(colors));
                        break;
                    case TEXTSIZE:
                        style[0] = new AbsoluteSizeSpan(context.getResources().getDimensionPixelSize(textSizes));
                        break;
                    case BOTH://不同颜色和不同字体的起始点相同
                        style[0] = new ForegroundColorSpan(context.getResources().getColor(colors));
                        style[1] = new AbsoluteSizeSpan(context.getResources().getDimensionPixelSize(textSizes));
                        break;
                }
        for(CharacterStyle cs:style){
            sb.setSpan(cs,startIndex,endIndex,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        if(isBold){
            sb.setSpan(new StyleSpan(Typeface.BOLD),startIndex,endIndex,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }


    }
    textview.setText(sb);
}

签到天数: 10 天

连续签到: 1 天

[LV.3]偶尔看看II

28

主题

314

帖子

1229

e币
 楼主| 发表于 2017-3-15 15:54:36 | 显示全部楼层
COLOR TEXTSIZE BOTH 其中TextStyle是自定义的一个enum类

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

0

主题

4

帖子

2

e币
发表于 2017-4-26 14:01:02 | 显示全部楼层
非常感谢给大家分享这么好的知识
*滑动验证:
您需要登录后才可以回帖 登录 | 加入eoe

本版积分规则

推荐阅读
赞助商们

QQ|联系我们|小黑屋|手机版|eoe 移动开发者论坛 ( 京ICP备11018032 京公网安11010802020210  

GMT+8, 2017-8-16 21:03 , Processed in 0.561709 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
关闭

扫一扫 关注eoe官方微信