2015-08-09 68 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