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吧,必须兼容性和稳定性方面能更好的保障。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中,可以通过使用TextView控件和相应的属性来实现不同的文字效果。根据提供的引用,以下是一些常见的文字效果和对应的属性: 1. 背景颜色:可以使用android:background属性来设置TextView的背景颜色,比如android:background="#FFB6C1"将背景颜色设置为粉红色。 2. 文字内容:可以使用android:text属性来设置TextView显示的文字内容,比如android:text="hello,android studio! 你好,安卓工作室。"将显示指定的文本。 3. 文字大小:可以使用android:textSize属性来设置TextView文字的大小,比如android:textSize="50dp"将文字大小设置为50dp。 4. 文字居中:可以使用android:gravity属性来设置TextView文字的对齐方式,比如android:gravity="center"将文字居中对齐。 5. 单行显示:可以使用android:singleLine属性来限制TextView只显示一行文字,比如android:singleLine="true"将只显示一行文字。 6. 文字省略:可以使用android:ellipsize属性来设置TextView文字超出一行时的省略方式,比如android:ellipsize="marquee"将文字省略为跑马灯效果。 7. 焦点设置:可以使用android:focusable和android:focusableInTouchMode属性来设置TextView是否可以获得焦点,比如android:focusable="true"和android:focusableInTouchMode="true"将允许TextView获取焦点。 除了以上常见的文字效果,还可以通过使用不同的属性和方法来实现更多样化的效果,例如链接点击、字体样式等。通过导入相应的包和使用LinkMovementMethod类和URLSpan类,可以实现TextView文本中某个字的颜色改变或可点击。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值