Textview设置不同样式

前言:在开发过程中会遇到,同一行文字不同属性,这时就可以利用这个工具类,设置你想要的属性啦!

用法:一个工具类,直接调用,效果图:
这里写图片描述

1.工具类:

/* Created by Administrator on 2016/7/8. */
public classStringFormatUtil {
private SpannableStringBuilder spBuilder;
private String wholeStr, highlightStr;
private Context mContext;
private int color;
private int start = 0, end = 0;

public StringFormatUtil(Context context){
    this.mContext=context;



}

/**
 *
 * @param wholeStr 全部文字
 * @param highlightStr 改变颜色的文字
 * @param color 颜色
 *
 */
public StringFormatUtil setTextColor(String wholeStr,String highlightStr,int color){
    if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
        if(wholeStr.contains(highlightStr)){
            /*
             *  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
             */
            start=wholeStr.indexOf(highlightStr);
            end=start+highlightStr.length();
        }else{
            return null;
        }
    }else{
        return null;
    }
    spBuilder=new SpannableStringBuilder(wholeStr);
    color=mContext.getResources().getColor(color);
    CharacterStyle charaStyle=new ForegroundColorSpan(color);
    spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return this;
}

/*设置背景*/
public void setBackGround(String wholeStr,String highlightStr,int color){

    if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
        if(wholeStr.contains(highlightStr)){
            /*
             *  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
             */
            start=wholeStr.indexOf(highlightStr);
            end=start+highlightStr.length();
        }else{
            return;
        }
    }else{
        return;
    }
    color=mContext.getResources().getColor(color);
    CharacterStyle charaStyle=new BackgroundColorSpan(color);
    spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


}


/*字体*/
public void setTypefaceSpan(String wholeStr,String highlightStr,String type){

    if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
        if(wholeStr.contains(highlightStr)){
            /*
             *  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
             */
            start=wholeStr.indexOf(highlightStr);
            end=start+highlightStr.length();
        }else{
            return;
        }
    }else{
        return;
    }
    CharacterStyle charaStyle=new TypefaceSpan(type);
    spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


}


/*设置缩放*/
public void setScaleSpan(String wholeStr,String highlightStr,Float scal){

    if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
        if(wholeStr.contains(highlightStr)){
            /*
             *  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
             */
            start=wholeStr.indexOf(highlightStr);
            end=start+highlightStr.length();
        }else{
            return;
        }
    }else{
        return;
    }
    CharacterStyle charaStyle=new ScaleXSpan(scal);
    spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


}

/*字体格式*/
public void setStyleSpan(String wholeStr,String highlightStr,int type){

    if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
        if(wholeStr.contains(highlightStr)){
            /*
             *  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
             */
            start=wholeStr.indexOf(highlightStr);
            end=start+highlightStr.length();
        }else{
            return;
        }
    }else{
        return;
    }
    CharacterStyle charaStyle=new StyleSpan(type);
    spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);


}


public SpannableStringBuilder getResult(){
    if (spBuilder != null) {
        return spBuilder;
    }
    return null;
} }

2.直接调用:

String text = “[默认地址]天津工业大学 北苑 1号楼A区3011号楼A区\n” +
“3011号楼A区301”;

StringFormatUtil spanStr = new StringFormatUtil(mContext); //设置字体颜色
spanStr.setTextColor(text,
“[默认地址]”, R.color.default_address_color); //设置背景颜色 spanStr.setBackGround(text,
“[默认地址]”, R.color.colorPrimary); //设置字体 spanStr.setTypefaceSpan(text,
“[默认地址]”, “monospace”); //设置字体缩放比例 spanStr.setScaleSpan(text,
“[默认地址]”, 2.0f); //设置字体样式,例如加粗、倾斜 spanStr.setStyleSpan(text,
“[默认地址]”, Typeface.BOLD_ITALIC); textView.setText(spanStr.getResult());

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值