package com.threeH.MyExhibition.tools;
import android.graphics.drawable.Drawable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.BulletSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.ScaleXSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.TypefaceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
public class TextViewLinkUtil {
/**
* 设置字体(default,default-bold,monospace,serif,sans-serif)
*
* @param spannableString
* @param typeface
* @param starIndex
* @param endIndex
*/
public void getTypefaceSpan(SpannableString spannableString,
String typeface, int starIndex, int endIndex) {
spannableString.setSpan(new TypefaceSpan(typeface), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置绝对字体大小(单位:像素)
*
* @param spannableString
* @param pixel
* @param starIndex
* @param endIndex
*/
public void getAbsoluteSizeSpan(SpannableString spannableString, int pixel,
int starIndex, int endIndex) {
spannableString.setSpan(new AbsoluteSizeSpan(pixel), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置绝对字体大小(单位:像素), flag为ture,表示前面的字体大小单位为dip,flase字体大小单位为像素
*
* @param spannableString
* @param pixel
* @param flag
* @param starIndex
* @param endIndex
*/
public void getAbsoluteSizeSpan(SpannableString spannableString, int pixel,
boolean flag, int starIndex, int endIndex) {
spannableString.setSpan(new AbsoluteSizeSpan(pixel, flag), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置相对字体大小(单位:像素) 参数表示为默认字体大小的多少倍 0.5f表示默认字体大小的一半,2.0f表示默认字体大小的两倍
*
* @param spannableString
* @param pixel
* @param starIndex
* @param endIndex
*/
public void getRelativeSizeSpan(SpannableString spannableString,
float pixel, int starIndex, int endIndex) {
spannableString.setSpan(new RelativeSizeSpan(pixel), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置字体颜色
*
* @param spannableString
* @param color
* @param starIndex
* @param endIndex
*/
public void getForegroundColorSpan(SpannableString spannableString,
int color, int starIndex, int endIndex) {
spannableString.setSpan(new ForegroundColorSpan(color), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置字体背景色
*
* @param spannableString
* @param color
* @param starIndex
* @param endIndex
*/
public void getBackgroundColorSpan(SpannableString spannableString,
int color, int starIndex, int endIndex) {
spannableString.setSpan(new BackgroundColorSpan(color), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置字体样式正常(NORMAL),粗体(BOLD),斜体(ITALIC),粗斜体(BOLD_ITALIC)
* eg:android.graphics.Typeface.NORMAL
*
* @param spannableString
* @param style
* @param starIndex
* @param endIndex
*/
public void getStyleSpan(SpannableString spannableString, int style,
int starIndex, int endIndex) {
spannableString.setSpan(new StyleSpan(style), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置下划线
*
* @param spannableString
* @param starIndex
* @param endIndex
*/
public void getUnderlineSpan(SpannableString spannableString,
int starIndex, int endIndex) {
spannableString.setSpan(new UnderlineSpan(), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置删除线
*
* @param spannableString
* @param starIndex
* @param endIndex
*/
public void getStrikethroughSpan(SpannableString spannableString,
int starIndex, int endIndex) {
spannableString.setSpan(new StrikethroughSpan(), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置下标
*
* @param spannableString
* @param starIndex
* @param endIndex
*/
public void getSubscriptSpan(SpannableString spannableString,
int starIndex, int endIndex) {
spannableString.setSpan(new SubscriptSpan(), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置上标
*
* @param spannableString
* @param starIndex
* @param endIndex
*/
public void getSuperscriptSpan(SpannableString spannableString,
int starIndex, int endIndex) {
spannableString.setSpan(new SuperscriptSpan(), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 超级链接(需要添加setMovementMethod方法附加响应) eg:电话,linkType="tel:4155551212"
* 邮件,linkType="mailto:webmaster@google.com"
* 网络,linkType="http://www.baidu.com"
* 短信,使用"sms:"或者"smsto:",linkType="sms:4155551212"
* 彩信,使用"mms:"或者"mmsto:",linkType="mms:4155551212"
* 地图,linkType="geo:38.899533,-77.036476"
*
* @param spannableString
* @param linkType
* @param starIndex
* @param endIndex
*/
public void getURLSpan(SpannableString spannableString, String linkType,
int starIndex, int endIndex) {
spannableString.setSpan(new URLSpan(linkType), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置相对字体大小(单位:像素) 参数表示为默认字体宽度的多少倍 eg:2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变
*
* @param spannableString
* @param pixel
* @param starIndex
* @param endIndex
*/
public void getScaleXSpan(SpannableString spannableString, float pixel,
int starIndex, int endIndex) {
spannableString.setSpan(new ScaleXSpan(pixel), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置项目符号 BulletSpan(width,color)第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色
* eg:BulletSpan
* (android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN)
*
* @param spannableString
* @param width
* @param color
* @param starIndex
* @param endIndex
*/
public void getBulletSpan(SpannableString spannableString, int width,
int color, int starIndex, int endIndex) {
spannableString.setSpan(new BulletSpan(width, color), starIndex,
endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
/**
* 设置图片 eg: Drawable drawable =
* getResources().getDrawable(R.drawable.ic_action_search);
* drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
* drawable.getIntrinsicHeight());
*
* @param spannableString
* @param drawable
* @param starIndex
* @param endIndex
*/
public void getImageSpan(SpannableString spannableString,
Drawable drawable, int starIndex, int endIndex) {
spannableString.setSpan(new ImageSpan(drawable), starIndex, endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}