EditText加入图片混编显示


Android WebView 固然强大,不过很多时候还要依赖于Android 组件。这些组件的常规的使用方法这里就不必说了,而在这些组件中还有很多比较有趣的使用方法。例如,使用过QQ for Android 的开发人员可能会发现,在输入聊天记录时,可以直接将表情图像放到EditText 组件中(如图3 所示)。也许会多初学者会感觉实现这个功能比较困难,但实际上实现这个功能再简单不过了。



    我们一般通过EditText setText 方法来设置EditText 中的文本,例如如下的代码EditText 添加了一个字符串。

EditText edittext = (EditText)findByView(R.id.edittext);
Edittext.setText(“测试数据”);



我们只需要对上面的代码稍微做一下手脚,就可以实现将图像插入到EditText中的目的。如果读者看过《Android/OPhone开发完全讲义》,会发现书中在很多情况下使用了文本标记(类似于HTML语言的标签,但只包含了十分有限的HTML语言的功能)。在这些标记中有一个<img>标记。通过这个标记,可以很容易地实现将图像插入到EditText的功能。不过使用<img>标签要比使用其他的标签多一个步骤,这就是要实现一个ImageGetter接口,通过这个接口,可以获得一个Drawable对象。先看看如下的代码:

ImageGetter imageGetter = new ImageGetter() {
		@Override
		public Drawable getDrawable(String source) {
			int id = Integer.parseInt(source);
			Drawable d = getResources().getDrawable(id);
			d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
			return d;
		}
	};


    上面的代码通过ImageGetter接口的getDrawable方法返回了一个Drawable对象,其中source参数的值就是<img>标签的src属性的值。我们需要通过如下的代码来使用<img>标签。


editText.append(Html.fromHtml("<imgsrc='"


+ faces[new Random().nextInt(6)] +"'/>", imageGetter, null));

editText.append(Html.fromHtml("<img src=\""+ faces[new Random().nextInt(11)] +"\"/>", imageGetter, null));


    其中faces是一个int类型数组,保存了相应的drawable资源ID值。在使用<img>标签之前需要使用Html.fromHtml方法来封装这些标签,如果使用的是<img>标签,需要使用fromHtml方法的第2个参数指定ImageGetter对象,以便通过<img>标签的src属性获得相应的Drawable对象。通过EditText.append方法插入<img>标签后,系统会自动<img>标签转换成相应的图像显示在EditText中。下面来看看我们的成果(如图4所示)。


参考:http://blog.csdn.net/zhjp4295216/article/details/5824997

http://blog.csdn.net/fancylovejava/article/details/17930013

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值