SpannableString的一次使用

一:背景

项目中需要这样的效果:


效果图

就是普通的textview后面要跟上置顶,精华等标签.

二:思路

(1)首先想到的是把置顶,精华这样的标签当成图片!在textview后面跟图片应该很容易实现,具体特性textview后面怎么跟图片,可自行百度,有很多方法,很简单

(2)第二种想到的是用SpannableString,用法如下


具体实现

说明:

(1)创建SpannableString对象,传入的参数就是textview要显示的文字,就相当于"今日手游:我要制作出...置顶 精华"

(2)然后创建了一个bg,这个bg就是"精华"文字后面的背景,注意一定要给这个bg设置大小,也就是setBounds(),否则其大小为0

(3)start 和 end 就是你想处理title的哪一段字符串,这里我们处理最后两个

(4)paint的设置颜色和文字大小就是我们要处理那部分文字的颜色和大小,对应的是"精华"

这样做完之后,会发现有一个问题,就是如果第二行只有一个标签的话,会显示的不对,比如当"置顶"标签独自在下一行的时候也许会这样:


异常图

产生这个问题的原因:在给标签画背景的时候,基准线除了问题,当某一行不止一个标签存在的时候就不会出现这个问题,所以我们的解决方案是在title后面增加一个空格,也就是相当于在这个"置顶"标签后面还有一个空格,这样的话就不会出现基准线问题,问题也就解决了,亲测可行.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容