void setSpan (Object what, int start, int end, int flags)
參數(shù)說(shuō)明:
object what :對(duì)應(yīng)的各種Span
int start:開(kāi)始應(yīng)用指定Span的位置,索引從0開(kāi)始
int end:結(jié)束應(yīng)用指定Span的位置,特效并不包括這個(gè)位置。比如如果這里數(shù)為3(即第4個(gè)字符),第4個(gè)字符不會(huì)有任何特效。
int flags:取值有如下四個(gè)
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范圍的前面和后面插入新字符都不會(huì)應(yīng)用新樣式
Spannable.SPAN_EXCLUSIVE_INCLUSIVE :前面不包括,后面包括。即僅在范圍字符的后面插入新字符時(shí)會(huì)應(yīng)用新樣式
Spannable.SPAN_INCLUSIVE_EXCLUSIVE :前面包括,后面不包括。
Spannable.SPAN_INCLUSIVE_INCLUSIVE :前后都包括。
private void addspannablestringbuilderSpan() {
SpannableStringBuilder ss=newSpannableStringBuilder("xxxxxxxxxxxxxxxxxxxx");
//用顏色標(biāo)記文本
ss.setSpan(newForegroundColorSpan(Color.RED),0,2,,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用超鏈接標(biāo)記文本
ss.setSpan(newURLSpan("tel:4155551212"),2,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用樣式標(biāo)記文本(斜體)
ss.setSpan(newStyleSpan(Typeface.BOLD_ITALIC),5,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用刪除線(xiàn)標(biāo)記文本
ss.setSpan(newStrikethroughSpan(),7,10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用下劃線(xiàn)標(biāo)記文本
ss.setSpan(newUnderlineSpan(),10,16,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用顏色標(biāo)記
ss.setSpan(newForegroundColorSpan(Color.GREEN),10,12,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//獲取Drawable資源
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0,0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//創(chuàng)建ImageSpan
ImageSpan span =newImageSpan(d, ImageSpan.ALIGN_BASELINE);
//用ImageSpan替換文本
ss.setSpan(span,18,19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.setText(ss);
tv.setMovementMethod(LinkMovementMethod.getInstance());//實(shí)現(xiàn)文本的滾動(dòng)
}
/**
* 光柵效果
*/
privatevoidaddRasterizerSpan() {
SpannableString spanText =newSpannableString("StrikethroughSpan");
spanText.setSpan(newStrikethroughSpan(),0,7, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanText);
}
/**
* 修飾效果
*/
privatevoidaddmaskfilteSpan() {
SpannableString spanText =newSpannableString("benzlocke6666666");
intlength = spanText.length();
//模糊(BlurMaskFilter)
MaskFilterSpan maskFilterSpan =newMaskFilterSpan(newBlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan,0, length -10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan =newMaskFilterSpan(newEmbossMaskFilter(newfloat[]{1,1,3},1.5f,8,3));
spanText.setSpan(maskFilterSpan, length -10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanText);
}
/**
* 超鏈接
*/
privatevoidaddUrlSpan() {
SpannableString spanString =newSpannableString("超鏈接");
URLSpan span =newURLSpan("tel:0123456789");
spanString.setSpan(span,0,3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
tv.setMovementMethod(LinkMovementMethod.getInstance());
/**
* 文字背景顏色
*/
privatevoidaddBackColorSpan() {
SpannableString spanString =newSpannableString("文字背景顏色");
BackgroundColorSpan span =newBackgroundColorSpan(Color.YELLOW);
spanString.setSpan(span,0,6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 文字顏色
*/
privatevoidaddForeColorSpan() {
SpannableString spanString =newSpannableString("文字顏色");
ForegroundColorSpan span =newForegroundColorSpan(Color.BLUE);
spanString.setSpan(span,0,4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 字體大小
*/
privatevoidaddFontSpan() {
SpannableString spanString =newSpannableString("36號(hào)字體");
AbsoluteSizeSpan span =newAbsoluteSizeSpan(36);
spanString.setSpan(span,0,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 粗體,斜體
*/
privatevoidaddStyleSpan() {
SpannableString spanString =newSpannableString("ABCDEF");
StyleSpan span =newStyleSpan(Typeface.BOLD_ITALIC);
spanString.setSpan(span,0,3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 刪除線(xiàn)
*/
privatevoidaddStrikeSpan() {
SpannableString spanString =newSpannableString("刪除線(xiàn)");
StrikethroughSpan span =newStrikethroughSpan();
spanString.setSpan(span,0,3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 下劃線(xiàn)
*/
privatevoidaddUnderLineSpan() {
SpannableString spanString =newSpannableString("下劃線(xiàn)");
UnderlineSpan span =newUnderlineSpan();
spanString.setSpan(span,0,3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
/**
* 圖片
*/
privatevoidaddImageSpan() {
SpannableString spanString =newSpannableString(" ");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0,0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span =newImageSpan(d, ImageSpan.ALIGN_BASELINE);
spanString.setSpan(span,0,1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append("\n");
tv.append(spanString);
}
}