BackgroundColorSpan具有额外的垂直填充

use*_*567 7 android android-ui

在我的应用程序中,我的外观与GMail应用程序UI中的标签类似.对于那些可能不知道的人,他们看起来像这样(标签是这些彩色条):Gmail截图

为了达到类似的效果,我使用了九个补丁drawable - 对于每个标签我创建一个TextView并为其分配drawable.这是一个简单的解决方案,但我不喜欢它.它并不优雅,如分析器所示,它非常慢,而我认为这不是正确的方法.

我更改了UI的设计以使其更"ICS-y",因此我从标签中删除了圆角.我开始考虑如何替换9补丁解决方案.最明显的是使用BackgroundColorSpan.但它有一个小缺点.我希望我的标签有一些填充.有了drawables,很容易实现.有了跨度,就更难了.要进行水平填充,我可以在字符串的开头和结尾添加空格.但是如何使垂直填充更大?为了清理,这是BackgroundColorSpan标签的屏幕截图:

在此输入图像描述

我想让文字上方和下方的彩色部分变大.我想我应该使用某种MetricAffectingSpan,但我无法弄清楚哪一个.或者也许我应该写自己的?或者,最后,也许跨度只是无法满足我的需求,我应该留下图像或创建画布并"手动"绘制一切,如在GMail应用程序?

poi*_*oae 2

最简单的方法是形状,我很确定 GMAIL 应用程序正在使用它。

只需创建一个自定义形状(在您的情况下是一个带有圆角和纯色的矩形形状),然后将此可绘制对象分配给文本视图的背景属性。

形状在 xml 中定义。您将按如下方式分配它:

<TextView
   ...
   android:background="@drawable/my_awesome_shape" />
Run Code Online (Sandbox Code Playgroud)