如何让EditText显示图片 edittext里面放图片

EditText:

通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?

记得android中有个android.text包,这里提供了对文本的强大的处理功能。
如何让EditText显示图片 edittext里面放图片

添加图片主要用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);

}

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/86001.html

更多阅读

如何让电脑开机速度变得更快 window10开机速度变快

如何让电脑开机速度变得更快——简介现在大部分xp用户安装的Ghost系统,在电脑启动的时候就会显示系统启动选项,通常情况下会停留30秒,若要减少这个时间可以看看下面的步骤“如何让电脑开机速度变得更快”如何让电脑开机速度变得更快—

如何让手机上网加速 手机上网加速

如何让手机上网加速——简介手机提速很简单。下面请大家过目。如何让手机上网加速——方法/步骤如何让手机上网加速 1、。.先在手机系统文件里找到build.prop这个文件,这个文件在system文件夹下面。找到以后,打开,然后可以把下面想使

如何快速批量转换图片格式 批量图片格式转换器

如何快速批量转换图片格式——简介有时候我们会需要对一些图片进行格式转换,方法有很多,但普遍有点麻烦。今天教大家一个快速批量转换图片格式的方法。如何快速批量转换图片格式——工具/原料图转如何快速批量转换图片格式——方法/

qq隐藏了让他显示出来的快捷键 右下角qq图标不见了

qq隐藏了让他显示出来的快捷键——简介qq隐藏了之后很多人就找不到显示出来的方法了,尤其是登录了几个QQ的时候总是按CTRL+ALT+Z也没用,下面教大家如何设置快捷键来快速显示已经隐藏的QQ。qq隐藏了让他显示出来的快捷键—

声明:《如何让EditText显示图片 edittext里面放图片》为网友控心恋分享!如侵犯到您的合法权益请联系我们删除