Android TextView使用SpannableString设置复合文本的方法

来源:互联网 发布:大风刮过知乎 编辑:程序博客网 时间:2024/05/17 23:34

 

1、BackgroundColorSpan 背景色

SpannableString spanText =new SpannableString("脚本之家 --http://www.jb51.net");
spanText.setSpan(newBackgroundColorSpan(Color.GREEN), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

2、ForegroundColorSpan 文本颜色(前景色)

spanText = new SpannableString("脚本之家 --http://www.jb51.net");
spanText.setSpan(newForegroundColorSpan(Color.BLUE), 6, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


3、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

spanText = new SpannableString("MaskFilterSpan --http://www.jb51.net");
int length = spanText.length();
//模糊(BlurMaskFilter)
MaskFilterSpan maskFilterSpan =new MaskFilterSpan(newBlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan,0, length - 10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan(newEmbossMaskFilter(newfloat[]{1,1,3},1.5f, 8,3));
spanText.setSpan(maskFilterSpan, length -10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

4、ScaleXSpan 基于x轴缩放

spanText = new SpannableString("ScaleXSpan -- 脚本之家");
//参数proportion:比例大小
spanText.setSpan(newScaleXSpan(3.8f),3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

5、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
DynamicDrawableSpan drawableSpan =
 newDynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {
 @Override
 publicDrawable getDrawable() {
  Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
  d.setBounds(0,0, 50,50);
  returnd;
 }
};
DynamicDrawableSpan drawableSpan2 =new DynamicDrawableSpan(
DynamicDrawableSpan.ALIGN_BOTTOM) {
 @Override
 publicDrawable getDrawable() {
   Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
   d.setBounds(0,0, 50,50);
    returnd;
   }
  };
spanText.setSpan(drawableSpan,3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spanText.setSpan(drawableSpan2,7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);


原创粉丝点击