2011-12-16 86 views
7

在我的应用程序中,我在外观上与GMail应用程序UI中的标签类似。对于那些谁可能不知道,他们看起来像这样(标签是这些丰富多彩条):Gmail screenshotBackgroundColorSpan与其他垂直填充

为了实现我用九宫格可绘制类似的效果 - 每个标签我创建一个TextView和分配绘制它。这是简单的解决方案,但我不喜欢它。它并不优雅,它像Profiler所显示的那样非常缓慢,我不认为这是正确的做法。

我改变了UI的设计,使其更加“ICS-Y”,所以我从标签中去除了圆角。我开始考虑如何取代9-patch解决方案。最明显的是使用BackgroundColorSpan。但它有一个小缺点。我想我的标签有一些填充。使用drawables很容易实现。随着跨度,这是更难。为了进行水平填充,我可以在字符串的开头和结尾添加空格。但如何使垂直填充更大?为了澄清事实,这是标签与BackgroundColorSpan截图:

enter image description here

我想使着色部上方和下方的文本较大。我想我应该使用某种MetricAffectingSpan,但我无法弄清楚哪一个。或者,也许我应该写我自己的?或者,最后,可能跨度不能满足我的需求,我应该留下图片或创建一个画布,并“手动”绘制一切,如在GMail应用程序?

回答

2

最简单的方法来做到这一点,我敢肯定,GMAIL应用程序正在利用它,都是形状。

只要创建一个自定义shape,在你的情况下,一个圆角和纯色的矩形形状,然后分配这个drawable到你的textview的背景属性。

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

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

+1的形状,你也可以做一些先进的东西,像结合的形状添加阴影等。 – Guillaume 2011-12-16 15:57:36