给TextView设置Span

来源:互联网 发布:光明骑士和游侠数据 编辑:程序博客网 时间:2024/06/16 19:12
package com.home.util;import android.content.Context;import android.graphics.Typeface;import android.graphics.drawable.Drawable;import android.text.Spannable;import android.text.SpannableString;import android.text.style.AbsoluteSizeSpan;import android.text.style.BackgroundColorSpan;import android.text.style.ForegroundColorSpan;import android.text.style.ImageSpan;import android.text.style.StrikethroughSpan;import android.text.style.StyleSpan;import android.text.style.UnderlineSpan;import android.widget.TextView;public class TextViewUtil {private static final String MARK = "\u3000";/** * 设置首行缩进n个字符 *  * @param textView *            文本框 * @param num *            缩进个数 * @param text *            文本内容 */public static void setIndent(TextView textView, int num, String text) {String first = "";for (int i = 0; i < num; i++) {first = first + MARK;}textView.setText(first + text);}/** * 设置部分文本字体颜色值 *  * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 * @param colorId *            颜色值ID */public static void setPartTextColor(TextView textView, String text,int start, int end, int colorId) {SpannableString ss = new SpannableString(text);ss.setSpan(new ForegroundColorSpan(colorId), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}/** * 设置部分文本背景颜色值 *  * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 * @param colorId *            颜色值ID */public static void setPartBackgroundColor(TextView textView, String text,int start, int end, int colorId) {SpannableString ss = new SpannableString(text);ss.setSpan(new BackgroundColorSpan(colorId), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}/** * 设置部分文本大小 *  * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 * @param size *            字体绝对值大小 */public static void setPartTextSize(TextView textView, String text,int start, int end, int size) {SpannableString ss = new SpannableString(text);ss.setSpan(new AbsoluteSizeSpan(size), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}/** * 设置图片 *  * @param context *            上下文对象 * @param textView *            文本框 * @param bitmapText *            图片的文本标示 * @param resId *            图片资源id */public static void setImage(Context context, TextView textView,String bitmapText, int resId) {ImageSpan imageSpan = new ImageSpan(context, resId);SpannableString ss = new SpannableString(bitmapText);ss.setSpan(imageSpan, 0, bitmapText.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.append(ss);}/** * 设置图片(指定同样的宽和高) *  * @param context *            上下文对象 * @param textView *            文本框 * @param bitmapText *            图片的文本标示 * @param resId *            图片资源id * @param size *            设置显示的图片尺寸 */public static void setImage(Context context, TextView textView,String bitmapText, int resId, int size) {SpannableString ss = new SpannableString(bitmapText);Drawable drawable = context.getResources().getDrawable(resId);drawable.setBounds(0, 0, size, size);// 这里设置图片的大小ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);ss.setSpan(imageSpan, 0, bitmapText.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.append(ss);}/** * 设置图片(指定宽和高) *  * @param context *            上下文对象 * @param textView *            文本框 * @param bitmapText *            图片的文本标示 * @param resId *            图片资源id * @param width *            显示的宽 * @param height *            显示的高 */public static void setImage(Context context, TextView textView,String bitmapText, int resId, int width, int height) {SpannableString ss = new SpannableString(bitmapText);Drawable drawable = context.getResources().getDrawable(resId);drawable.setBounds(0, 0, width, height);ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);ss.setSpan(imageSpan, 0, bitmapText.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.append(ss);}/** * 设置部分文本字体风格 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 * @param style *            字体风格(Typeface的枚举) */public static void setPartTypeface(Context context, TextView textView,String text, int start, int end, int style) {SpannableString ss = new SpannableString(text);ss.setSpan(new StyleSpan(style), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}/** * 将部分文本设置为粗体 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 */public static void setPartBold(Context context, TextView textView,String text, int start, int end) {setPartTypeface(context, textView, text, start, end, Typeface.BOLD);}/** * 将部分文本设置为斜体 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 */public static void setPartItalic(Context context, TextView textView,String text, int start, int end) {setPartTypeface(context, textView, text, start, end, Typeface.ITALIC);}/** * 将部分文本设置为粗斜体 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 */public static void setPartBoldAndItalic(Context context, TextView textView,String text, int start, int end) {setPartTypeface(context, textView, text, start, end,Typeface.BOLD_ITALIC);}/** * 设置部分文本删除线 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 */public static void setPartStrikethrough(Context context, TextView textView,String text, int start, int end) {SpannableString ss = new SpannableString(text);ss.setSpan(new StrikethroughSpan(), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}/** * 设置部分文本下划线 *  * @param context *            上下文对象 * @param textView *            文本框 * @param text *            文本内容 * @param start *            设置的文本起点 * @param end *            设置的文本终点 */public static void setPartUnderLine(Context context, TextView textView,String text, int start, int end) {SpannableString ss = new SpannableString(text);ss.setSpan(new UnderlineSpan(), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setText(ss);}}

0 0
原创粉丝点击