import android.content.Context;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.CharacterStyle;
import android.text.style.ForegroundColorSpan;
/**
* Created by wanghuanlong on 2019/6/28.
*/
public class TextViewColorUtil {
private SpannableStringBuilder spBuilder;
private String wholeStr, highlightStr;
private Context mContext;
private int color;
private int start = 0, end = 0;
/**
* @param context
* @param wholeStr 所有文字
* @param highlightStr 改变颜色的文字
* @param color 颜色
*/
public TextViewColorUtil(Context context, String wholeStr, String highlightStr, int color) {
this.mContext = context;
this.wholeStr = wholeStr;
this.highlightStr = highlightStr;
this.color = color;
}
public TextViewColorUtil fillColor() {
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 SpannableStringBuilder getResult() {
if (spBuilder != null) {
return spBuilder;
}
return null;
}
}
//使用方法例如
String str = "积分:";
String strPoint = info.getMember_points() + "";
str = str + strPoint;
//设置
TextViewColorUtil spanStr = new TextViewColorUtil(mActivity, str, strPoint, R.color.integral_text).fillColor();
tvLoginAdvice.setText(spanStr.getResult());