SpannableString的一次使用

一:背景

项目中需要这样的效果:


效果图

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

二:思路

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

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


SpannableString的一次使用_第1张图片
具体实现

说明:

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

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

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

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

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


异常图

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

你可能感兴趣的:(SpannableString的一次使用)