15
我一直在試圖製作一個圓形TextView
。它是一個圓圈,我想要在圓形氣泡上方容納整個空間,如下圖所示。如何製作圓形TextView
請看附件圖片。
在該圖像中,我們有與它圓形文本的圓形氣泡。 我已經嘗試設置橢圓形.xml
作爲TextView
的背景,但仍然沒有運氣。
編輯:
隨着文本長度增加。它必須縮小以適應圓圈內部。這是思考最難的部分。
我一直在試圖製作一個圓形TextView
。它是一個圓圈,我想要在圓形氣泡上方容納整個空間,如下圖所示。如何製作圓形TextView
請看附件圖片。
在該圖像中,我們有與它圓形文本的圓形氣泡。 我已經嘗試設置橢圓形.xml
作爲TextView
的背景,但仍然沒有運氣。
編輯:
隨着文本長度增加。它必須縮小以適應圓圈內部。這是思考最難的部分。
您需要創建一個自定義視圖,可能從TextView
延伸,將該圓圈設置爲背景圖像,並根據文本的寬度手動計算文本寬度/折行。
爲了計算一個字符串的寬度,參見How to calculate string font width in pixels?
一些數學和計算需要當然以測量每行中的可用空間;但我認爲這是唯一的方法,因爲沒有標準組件可以做。
要將文本放置在視圖上,請使用Canvas
class的drawText
。
+1,這裏沒有內置組件。此外,創建自定義視圖很有趣:) – Felix
你說,「根據文本的寬度手動計算文本寬度/打破線條。」 這需要是動態的,以適應圈內不同長度的文本。我怎麼能測量我的文本將填充內圈的行數? –
我認爲你會測量整個文本作爲一個字符串,它給你在px中的整個所需的寬度。然後,您需要計算每行的px空間,從中心開始到外部。我手邊沒有公式,但這可能是我開始研究它的方式。添加換行符,然後計算您需要多少換行符。當然這是一種「動態」計算,因爲行數與每行的字符串長度直接相關。我相信這有點複雜,並不容易,但可以完成;-) –