Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等

转载 2012年03月26日 12:43:18

http://www.cnblogs.com/playing/archive/2011/03/18/1988182.html

 

EditText:

  通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢? 
记得android中有个android.text包,这里提供了对文本的强大的处理功能。 
添加图片主要用SpannableString和ImageSpan类:

Drawable drawable = getResources().getDrawable(id); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //需要处理的文本,[smile]是需要被替代的文本 SpannableString spannable = new SpannableString(getText().toString()+"[smile]"); //要让图片替代指定的文字就要用ImageSpan ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); //开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end) //最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12 spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); setText(spannable);

将需要的文字高亮显示: 

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); }

加下划线: 

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); }

组合运用:

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);

案例:带有/n换行符的字符串都可以用此方法显示2种颜色

/** * 带有/n换行符的字符串都可以用此方法显示2种颜色 * @param text * @param color1 * @param color2 * @return */ 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; }

Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等

 EditText:   通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?  记得and...
  • LANGXINLEN
  • LANGXINLEN
  • 2015年08月15日 09:54
  • 290

Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等

EditText:   通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?  记得android...
  • kakaxi1o1
  • kakaxi1o1
  • 2015年10月28日 09:34
  • 238

Android之TextView、EditText控件显示表情图片

本来该篇博文
  • Joker_Ya
  • Joker_Ya
  • 2014年11月21日 21:18
  • 3076

android开发EditText的Hint字体默认样式和下载字体样式的适配问题。

紧张了几个月的奋战终于项目到了测试阶段,真是泪奔啊,回想这段时间的地狱生涯 真实汗颜啊~~~~,闲话不多说了,看图说话, 问题,相信这张图片已经展示的很明白了 下来在来看看我的代码 EditT...
  • qq_34471736
  • qq_34471736
  • 2016年12月04日 14:17
  • 2057

TextView/EditText各种各样的效果

比较齐全的效果
  • u014050188
  • u014050188
  • 2016年03月04日 15:59
  • 611

Android的TextView使用Html来处理图片显示、字体样式、超链接等

http://www.cnblogs.com/playing/archive/2011/03/17/1987033.html 一、[Android实例]实现TextView里的文字有不同颜色...
  • han_jiang_xue
  • han_jiang_xue
  • 2013年04月10日 22:45
  • 567

Android的TextView使用Html来处理图片显示、字体样式、超链接等

一、[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html import andr...
  • dhbdfr
  • dhbdfr
  • 2013年08月07日 14:43
  • 383

Android的TextView使用Html来处理图片显示、字体样式、超链接等

一、[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html ...
  • hanjieson
  • hanjieson
  • 2013年08月24日 23:16
  • 1962

Android的TextView使用Html来处理图片显示、字体样式、超链接等

一、[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html ...
  • MYBOYER
  • MYBOYER
  • 2013年12月23日 14:27
  • 861

Android的TextView使用Html来处理图片显示、字体样式、超链接等

一、[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html import an...
  • kakaxi1o1
  • kakaxi1o1
  • 2015年10月28日 09:33
  • 401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
举报原因:
原因补充:

(最多只允许输入30个字)