2012-08-30 16 views
0

所以我得到了這個字體,必須在我的應用程序中使用9 pt的大小。這是我的設計師,一位Android文盲,正在告訴我。沒問題:Paint.setTextSize()採用sp。設計師提供pt尺寸

9 pt = (1/72) * 9 = 1/8 in. 

@ 285 dpi, this means 9 pt = 285/8 px 

Being xhdpi, 9 pt = 285/16 dp. 

整潔! 現在我該如何將此值轉換爲sp,以便我可以將它從標題中提供給方法?

感謝

+1

得到另一個設計師......或通過這篇文章和答案:http://stackoverflow.com/questions/6656651/difference-between-android-dimension-pt-and-dp – WarrenFaith

回答

2

這不是在文檔中指定的,但我相當肯定Paint.setTextSize()接受的像素值,而不是SP值,在這種情況下,你只需要在像素尺寸通過(八分之二百八十五) 。問題會試圖得到你的確切密度,from what I can gather是不可能的。您必須使用密度「桶」值(例如hdpi = 240)。

編輯:如果你實際上在談論TextView.setTextSize()那麼你實際上可以只使用setTextSize(TypedValue.COMPLEX_UNIT_PT, 9)並跳過整個轉換問題。

+0

呃,也許這是一個急忙回覆。請參閱http://stackoverflow.com/questions/5032355/android-textview-settextsize-incorrectly-increases-text-size上的其他回覆。不,確切的DPI不是問題,因爲我的情況不需要這樣的準確性。但這是另一個故事。所以sp或px? – kellogs

+2

對於TextView來說這是不同的。 TextView默認採用sp單位,但我相當肯定的Paint類使用像素。 – kcoppock

+0

現在看到。如何Paint.getTextSize()?它也可以在px中工作嗎? – kellogs