2012-07-02 82 views
15

我一直在試圖製作一個圓形TextView。它是一個圓圈,我想要在圓形氣泡上方容納整個空間,如下圖所示。如何製作圓形TextView

請看附件圖片。

Circular bubble with text in side

在該圖像中,我們有與它圓形文本的圓形氣泡。 我已經嘗試設置橢圓形.xml作爲TextView的背景,但仍然沒有運氣。

編輯:

隨着文本長度增加。它必須縮小以適應圓圈內部。這是思考最難的部分。

回答

10

您需要創建一個自定義視圖,可能從TextView延伸,將該圓圈設置爲背景圖像,並根據文本的寬度手動計算文本寬度/折行。

爲了計算一個字符串的寬度,參見How to calculate string font width in pixels?

一些數學和計算需要當然以測量每行中的可用空間;但我認爲這是唯一的方法,因爲沒有標準組件可以做。

要將文本放置在視圖上,請使用Canvas classdrawText

+2

+1,這裏沒有內置組件。此外,創建自定義視圖很有趣:) – Felix

+0

你說,「根據文本的寬度手動計算文本寬度/打破線條。」 這需要是動態的,以適應圈內不同長度的文本。我怎麼能測量我的文本將填充內圈的行數? –

+0

我認爲你會測量整個文本作爲一個字符串,它給你在px中的整個所需的寬度。然後,您需要計算每行的px空間,從中心開始到外部。我手邊沒有公式,但這可能是我開始研究它的方式。添加換行符,然後計算您需要多少換行符。當然這是一種「動態」計算,因爲行數與每行的字符串長度直接相關。我相信這有點複雜,並不容易,但可以完成;-) –