EditText常用样式函数

EditText(TextView同样处理)

1.添加图片主要用SpannableString和ImageSpan类:

Drawable drawable = getResources().getDrawable(R.drawable.icon);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
SpannableString spannable = new SpannableString(getText(R.id.editText1).toString() + "[smile]");
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
spannable.setSpan(span, getText(R.id.editText1).length(),getText(R.id.editText1).length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
editText.setText(spannable);
 

2.将需要的文字高亮显示:

public void highlight(int start,int end){
       //用于可变字符串
       SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());
       ForegroundColorSpan span=new ForegroundColorSpan(Color.RED);
       spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
       setText(spannable);
}

3.加下划线:

public void underline(int start,int end){
       SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());
       CharacterStyle span=new UnderlineSpan();
       spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
       setText(spannable);
}

4.组合运用:

SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());
CharacterStyle span_1=new StyleSpan(android.graphics.Typeface.ITALIC);
CharacterStyle span_2=new ForegroundColorSpan(Color.RED);
spannable.setSpan(span_1, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.setSpan(span_2, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setText(spannable);

5.带有\n换行符的字符串都可以用此方法显示2种颜色
 
public SpannableStringBuilder highlight(String text,int color1,int color2,int fontSize){
       SpannableStringBuilder spannable=new SpannableStringBuilder(text);//用于可变字符串
       CharacterStyle span_0=null,span_1=null,span_2;
       int end=text.indexOf("\n");
       if(end ==- 1){//如果没有换行符就使用第一种颜色显示
              span_0=new ForegroundColorSpan(color1);
              spannable.setSpan(span_0, 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
       }else{
              span_0=new ForegroundColorSpan(color1);
              span_1=new ForegroundColorSpan(color2);
              spannable.setSpan(span_0, 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
              spannable.setSpan(span_1, end+1, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

              span_2=new AbsoluteSizeSpan(fontSize);//字体大小
              spannable.setSpan(span_2, end+1, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
       }
       return spannable;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值