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


 

1、BackgroundColorSpan 背景色

SpannableString spanText = new SpannableString( "脚本之家 -- http://www.jb51.net" );
spanText.setSpan( new BackgroundColorSpan(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( new ForegroundColorSpan(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( new BlurMaskFilter( 3 , Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0 , length - 10 , Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan( new EmbossMaskFilter( new float []{ 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( new ScaleXSpan( 3 .8f), 3 , 7 , Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append( "\n" );
mTVText.append(spanText);

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值