2010-09-18 25 views
0

在我的應用程序中,我顯示一個表格,其中各個單元格是可編輯的文本字段(即EditText對象)。我目前正在努力爲這些計算適當的寬度。如何計算適當的字段寬度?

如果我將寬度設置爲與顯示的文本中包含字符一樣多的「Ems」,則我的字段寬度大約爲2倍,表格看起來很醜,浪費了大量寶貴的屏幕空間。在「Ems」中設置寬度本質上就是假設最壞的情況,即假定字符串只包含字體中最寬的字符,通常是'M'(因此是方法的名稱),'m ','W'或'_')。但平均而言,字符串包含較窄的字符,因此這些字段中的大部分都是半空的,並且實際內容太寬。我正在拼命尋找一種方法來計算更好的擬合寬度,而不是最壞的寬度。

在Java中執行此操作的「正常」方法(至少在AWT或Swing中)是要求小部件的當前Font(實際上是Font的FontMetrics),以計算並返回顯示給定所需的寬度字符串像素。但是,如何獲得一個TextView的字體?我沒有找到任何方法來獲取(文本)視圖的字體和/或給出單元格文本字符串的實際內容來計算更合適的寬度。在Android中如何做到這一點?

邁克爾

回答

5

我剛剛發現的 「缺失環節」:<TextView>.getPaint()就是答案!

「畫圖」,那麼具有類似於<Paint>.measureText(...)方法來計算串的寬度和< Paint>.ascent()<Paint>.descent()計算串的高度。

Michael