2015-08-09 38 views
2

UI設計師爲Android應用程序繪製了此設計:Android - sp有什麼問題?

大小爲1080x1920 px。這與具有xxhdpi密度的Nexus 5顯示器相同。在這個密度1dp = 3px。 我的設計JPEG圖像上有這封信。它的高度 - 45px。

enter image description here

所以我計算我的TextView大小45像素/ 3 = 15sp

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="15sp" 
    android:text="Large Text" 
    android:textColor="#5B5C5D" 
    android:singleLine="true" 
    android:id="@+id/tvFolder" /> 

但是,當我運行我的Galaxy Nexus的應用程序 - 720x1280px。密度 - xhdpi。 1dp = 2px。我得到了這個結果 - 我的字母'd'高度是24px,等於12dp。

enter image description here

當然,我可以重新計算(由乘法至1.25),並TextView的19dp。但我想明白爲什麼會發生這種情況,我們可以解決這個問題。也許我很困惑,犯了一個錯誤。所以我的問題,sp有什麼問題?

+1

我不明白你在這裏做什麼。你能詳細說明嗎? – iTurki

+0

okey,只需一分鐘 –

+0

「xxhdpi,3x,360dpX640dp」是什麼意思? – iTurki

回答

3

您是否在設備設置中檢查字體比例設置爲1?

如果您想要在設備特定的像素中定義字體大小,則必須使用dp,如果您希望用戶能夠根據自己的意願進行縮放,請使用sp。

+0

這100%的權利。這應該是45px/3 = 15dp不是sp。在@Christian答案 – hasan83

+0

中解釋過,因此sp和px之間的比率與系統設置中用戶的字體首選項設置有關,並且dp和px之間的比率與屏幕密度有關? –

+0

否,dp和sp之間的比率取決於用戶的偏好。這可以讓有明顯障礙的人調整他們的需求。根據指南,推薦使用sp,但如果您需要固定大小,則必須使用dp。 – Christian