项目中UI给提了个需求,这里用草图示意:
上图圆形是一个logo图片,UI想让logo永远紧跟标题居中显示,不然标题在多行时,logo单独居中特别丑。
看似简单的需求,着实难着了我,因为只要是使用TextView和ImageView,他们就是两个对象,没法相亲相爱在一起啊……直到某天编辑文档时突然想到,可以用TextView的图文排版功能啊!单独对字体进行处理,在字体后追加图就行了。
这里有两个难点:
- 如何无中生有,添加图
- 如何让图和文字居中对齐
看我一 一破解。
使用ImageSpan格式化文本
以前经常使用SpannableString
和ForegroundColorSpan
给TextView
的文字刷高亮色,而对于ImageSpan闻之甚少。
ImageSpan可以实现TextView的图文混排功能,使用方法同ForegroundColorSpan
。
所以首先我们需要找一个对象”刷图片”,原理很简单:
我们可以随意取一个文本符号,跟在文字后,然后匹配它的位置,用ImageSpan刷图片。
SpannableStringBuilder titleSp = new