SpannableString操作类
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextPaint;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.LeadingMarginSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.TextAppearanceSpan;
import android.text.style.TypefaceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
public class SpannableStringUtil {
public static void setForegroundColorSpan(TextView tv, String str, int color) {
SpannableString spanString = new SpannableString(str);
ForegroundColorSpan span = new ForegroundColorSpan(color);
spanString.setSpan(span, 0, str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void setBackgroundColorSpan(TextView tv, String str, int color) {
SpannableString spanString = new SpannableString(str);
BackgroundColorSpan span = new BackgroundColorSpan(color);
spanString.setSpan(span, 0, str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void setStyleSpan(TextView tv, String str, int style) {
SpannableString spanString = new SpannableString(str);
StyleSpan span = new StyleSpan(style);
spanString.setSpan(span, 0, str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void setRelativeFontSpan(TextView tv, String str,float proportion) {
SpannableString spanString = new SpannableString(str);
spanString.setSpan(new RelativeSizeSpan(proportion), 0, str.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void setTypefaceSpan(TextView tv, String str, String typefaceSpan) {
SpannableString spanString = new SpannableString(str);
spanString.setSpan(new TypefaceSpan(typefaceSpan), 0, str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void addUrlSpan(TextView tv, String str, String url) {
SpannableString spanString = new SpannableString(str);
URLSpan span = new URLSpan(url);
spanString.setSpan(span, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void addImageSpan(TextView tv, String str, Drawable drawable) {
SpannableString spanString = new SpannableString(str);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
spanString.setSpan(span, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void addUnderLineSpan(TextView tv, String str) {
SpannableString spanString = new SpannableString(str);
UnderlineSpan span = new UnderlineSpan();
spanString.setSpan(span, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void addStrikeSpan(TextView tv, String str) {
SpannableString spanString = new SpannableString(str);
StrikethroughSpan span = new StrikethroughSpan();
spanString.setSpan(span, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static void setTextAppearanceSpan(TextView tv, String str,
TextAppearanceSpan textAppearanceSpan) {
SpannableString spanString = new SpannableString(str);
spanString.setSpan(textAppearanceSpan, 0, str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
public static int getTextViewLength(TextView textView, String text) {
TextPaint paint = textView.getPaint();
return (int) paint.measureText(text);
}
public static void SetTextRetract(TextView textView, String str, int startPx, int endPx, int color) {
SpannableString spannableString = new SpannableString(str);
ForegroundColorSpan span = new ForegroundColorSpan(color);
spannableString.setSpan(span, 0, spannableString.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(startPx, endPx);
spannableString.setSpan(what, 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
textView.append(spannableString);
}
public static int GetMaxWidth(Activity activity, View view) {
WindowManager manager = activity.getWindowManager();
DisplayMetrics outMetrics = new DisplayMetrics();
if (manager != null) {
manager.getDefaultDisplay().getMetrics(outMetrics);
}
int width = outMetrics.widthPixels;
int paddingLeft = view.getPaddingLeft();
int paddingRight = view.getPaddingRight();
return width - paddingLeft - paddingRight;
}
}