如何让EditText显示图片 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; }
以上实际都是Html.fromHtml(html)的代码实现形式。
=============================================================================
TextView: (方法与EditView类似)
如何让一个TextView中的关键字高亮显示?
/**
* 关键字高亮显示
* @param target 需要高亮的关键字
*/
public void highlight(String target){
String temp=getText().toString();
SpannableStringBuilder spannable = new SpannableStringBuilder(temp);
CharacterStyle span=null;
Pattern p = Pattern.compile(target);
Matcher m = p.matcher(temp);
while (m.find()) {
span = new ForegroundColorSpan(Color.RED);//需要重复!
//span = new ImageSpan(drawable,ImageSpan.XX);//设置现在图片
spannable.setSpan(span, m.start(), m.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
setText(spannable);
}
更多阅读
如何让电脑开机速度变得更快 window10开机速度变快
如何让电脑开机速度变得更快——简介现在大部分xp用户安装的Ghost系统,在电脑启动的时候就会显示系统启动选项,通常情况下会停留30秒,若要减少这个时间可以看看下面的步骤“如何让电脑开机速度变得更快”如何让电脑开机速度变得更快—
如何让手机上网加速 手机上网加速
如何让手机上网加速——简介手机提速很简单。下面请大家过目。如何让手机上网加速——方法/步骤如何让手机上网加速 1、。.先在手机系统文件里找到build.prop这个文件,这个文件在system文件夹下面。找到以后,打开,然后可以把下面想使
如何快速批量转换图片格式 批量图片格式转换器
如何快速批量转换图片格式——简介有时候我们会需要对一些图片进行格式转换,方法有很多,但普遍有点麻烦。今天教大家一个快速批量转换图片格式的方法。如何快速批量转换图片格式——工具/原料图转如何快速批量转换图片格式——方法/
如何让花藤在空间显示?qq空间怎样显示花藤? qq空间旧版花藤
如何让花藤在空间显示?qq空间怎样显示花藤?——简介qq空间的应用中心有一款应用叫花藤,是进入空间的时候能够显示在空间页面的。小编的花藤成长速度很慢,不过一点一点也挺有乐趣的。下面小编就来分享下如何让花藤在qq空间显示的流程。
qq隐藏了让他显示出来的快捷键 右下角qq图标不见了
qq隐藏了让他显示出来的快捷键——简介qq隐藏了之后很多人就找不到显示出来的方法了,尤其是登录了几个QQ的时候总是按CTRL+ALT+Z也没用,下面教大家如何设置快捷键来快速显示已经隐藏的QQ。qq隐藏了让他显示出来的快捷键—