2011-12-16 83 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