TextView showTv=new TextView(this);
SpannableString sp=new SpannableString("文本内容文本内容文本内容文本内容文本内容文本内容文本内容");
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)
Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)
Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)
可选属性如下
//设置背景色
sp.setSpan(new BackgroundColorSpan(Color.RED),0,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置文本颜色
sp.setSpan(new ForegroundColorSpan(Color.GREEN),6,sp.length()-1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//MaskFilterSpan修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
sp.setSpan(new BlurMaskFilter(3, BlurMaskFilter.Blur.NORMAL),1,2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sp.setSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3),2,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//光栅效果
sp.setSpan(new RasterizerSpan(new Rasterizer()),3,4,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//删除线
sp.setSpan(new StrikethroughSpan(),4,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//下划线
sp.setSpan(new UnderlineSpan(),5,6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//绝对大小(文本字体)
sp.setSpan(new AbsoluteSizeSpan(20,true),6,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//相对大小
sp.setSpan(new RelativeSizeSpan(2.5f), 3, 4,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//若需使用自定义字体,可能要重写类TypefaceSpan
sp.setSpan(new TypefaceSpan("monospace"), 3, 10,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//字体样式:粗体、斜体等
sp.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 3, 7,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//extAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)
sp.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//设置图片,基于文本基线或底部对齐。
DynamicDrawableSpan drawableSpan=new DynamicDrawableSpan() {
@Override
public Drawable getDrawable() {
Drawable drawable=getResources().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0, 0, 50, 50);
return drawable;
}
};
sp.setSpan(drawableSpan,8,9,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//图片
sp.setSpan(new ImageSpan(getResources().getDrawable(R.mipmap.ic_launcher)), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//设置超链接
sp.setSpan(new URLSpan("http://www.baidu.com"), 6, sp.length() - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置部分文字的点击事件
sp.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
Log.e("tag","你点击了我");
}
},6, sp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置URLSpan可点击
showTv.setMovementMethod(LinkMovementMethod.getInstance());
//将文本显示在控件上
showTv.setText(sp);