Android文字环绕效果

最近在考题系统上给每个题目增加一个单选、多选还是判断的一个标记的时候,遇到了点麻烦,现记录下来,以备不时之需,效果如下:
这里写图片描述

首先说明下,哪个类型的type不是图片,是个文字加一个背景图,我的实现方式也很简单,就是利用系统的SpannableStringBuilder,不过我这里偷懒了,使用一个别人封装好的工具,地址如下:https://github.com/binaryfork/Spanny,但是如果你要达到我这个目的的话,直接去使用,你会发现总有问题,因为不仅仅只有图片,还有文字,系统和Spanny只能提供要么插入文字,要么插入图片,或者给文字设置背景色,但是如果是要对文字加个背景就有点为难了,那怎么办呢?
嘿嘿,这里面我采用了一个迂回战术,那就是既然Spanny 支持将一张图片进行插入,那么我就将文字以及文字的背景整个转化成一张图片不就完事了么?
ok,既然这么想到了,那就开始动手,代码如下:

tv.setDrawingCacheEnabled(true);
tv.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
          View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
tv.layout(0, 0, tv.getMeasuredWidth()+16, tv.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(tv.getDrawingCache());

通过上面的代码已经将文字和它的背景已经成功转化为一张图片了,但是到这里,一定要注意还要加上这样一句代码:tv.destroyDrawingCache();随手释放资源,这是个好习惯,必须要记住。^_^

最难的部分已经完成了,那最后就是把图片插入进去就行了,代码如下:

spanny.append(question.question, new ImageSpan(getActivity(),bitmap)) ;
//将内容设置到对应的控件
mTv_question_body.setText(spanny);

PS: 可能对于文字环绕效果,有些童鞋可能会用这个MixtureTextView 但是个人感觉这个某些场景下会有问题,比如我上面的这个需求就不能正常使用,顺带说一句,如果直接利用系统提供的API就能满足需求的话,那还是尽可能的使用系统API吧,必须兼容性和稳定性方面能更好的保障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值