[置顶] android开发——图文并茂

所谓图文并茂是指在一篇文章里,图片和文字互相陪衬,使内容丰富多彩。例如我们最常使用到的聊天工具,都是这样。其实实现这个功能很简单,只用有一些细节性的问题需要注意,现在让我们一起来学习。

android开发——图文并茂 - aloxc - aloxc
 

如图,最后一条消息就是图片加文字,重要代码:

SpannableString spannable = new SpannableString(str);//str为初始的字符串

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

ImageSpan imgSpan = new ImageSpan(bm);

spannable.setSpan(imgSpan, start, end, Spanned.

SPAN_EXCLUSIVE_EXCLUSIVE);//此处实现是吧spannable从start位开始到end位结束替换成imgSpan

最后只用把spannable给TextView设置上即可。

一个简单的图文并茂就实现了,这是在TextView上,但是如果在EditText上,我们就应该注意到很多的问题了:

第一,加上图片后需要能够输入文字;

第二,图片需要能够删除;

第三,图片需要加在光标所显示的位置;

贴出点击表情后程序所做的事:

EditText edit = (EditText)view.findViewById(R.id.edit_body);

int cursor = edit.getSelectionEnd();

String strSymbol = SmsConstant.ARR_BIAOQING[arg2];

edit.getText().insert(cursor, strSymbol);

SpannableString spannStr = new SpannableString(edit.getText());

int iResID = linear.getContext().getResources().getIdentifier(“biaoqing_”+arg2,

“drawable”, linear.getContext().getPackageName());

Bitmap bm = BitmapFactory.decodeResource(linear.getContext().getResources(), iResID);

ImageSpan imgSpan = new ImageSpan(bm);

spannStr.setSpan(imgSpan, cursor, cursor+strSymbol.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

edit.setText(spannStr);

edit.setSelection(cursor+strSymbol.length());


代码应该很好理解,

我们需要注意的是在setSpan()方法中,最后一个参数应该是Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,这样才可以删除,

关于图片显示到光标的位置只用如上获取到光标的位置即可,

这个功能实现起来很简单,也容易理解,只是本人愚笨在第一次处理的时候遇到了一些比较头痛的问题,给大家一个友情提示,图文并茂的时候建议不要使用gif格式的图片,因为会有时出现无法显示光标的问题,但是实际效果不会收到影响,只是视觉效果会收到影响。

关于图文并茂基本就完成了,大家一起学习,一起进步。

{再贴个监听键盘事件的问题,若要对EditText监听键盘事件,大家(指部分监听事件失败的童鞋)首先会想到setonkeylistener,孰不只这样只能监听到物理键盘,无法监听到软键盘,实际上应该是 addtextchangedlistener。}




转载于:https://www.cnblogs.com/ansionchen/archive/2013/03/16/3019095.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值