BackgroundColorSpan具有额外的垂直填充

时间:2011-12-16 15:50:21

标签: android android-ui

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

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

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

enter image description here

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

1 个答案:

答案 0 :(得分:2)

这是最简单的方法,我非常确定GMAIL应用程序正在使用它,这些都是形状。

只需创建一个自定义shape,在您的情况下是一个带圆角和纯色的矩形,然后将此drawable分配给textview的background属性。

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

<TextView
   ...
   android:background="@drawable/my_awesome_shape" />