随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。
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);
}
}