为什么不只是使用sp代替dp?

时间:2016-11-21 09:35:02

标签: android android-layout

在android中定义视图时,我们使用dp作为边距,大小等,但对于文本大小,我们使用sp。 sp也与dp相同,但对于文本。为什么我们不能使用sp来做一切呢? 我知道两者之间的区别。我在问sp是否是dp的超集,为什么要使用dp?为什么不使用sp来指定视图中的所有大小?

3 个答案:

答案 0 :(得分:2)

sp测量单位用于字体并且是像素 密度依赖于与dp完全相同的方式。一个额外的计算 Android设备在决定字体大小时会考虑到, 根据您使用的sp值,是用户自己的字体大小设置。所以,如果你测试 您的应用程序在具有正常大小字体的设备和模拟器上,然后是具有 视力障碍(或者只是喜欢大字体)并且字体设置很大,会看到 与你在测试中看到的东西不同的东西。

答案 1 :(得分:1)

<强> DP 密度无关像素 - 一种基于屏幕物理密度的抽象单元。这些单位相对于160 dpi的屏幕,因此一个dp是160 dpi屏幕上的一个像素。 dp与像素的比率将随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受&#34; dip&#34;和&#34; dp&#34;,虽然&#34; dp&#34;更符合&#34; sp&#34;。

<强>属 - 与比例无关的像素 - 这与dp单位类似,但它也可以根据用户的字体大小首选项进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户的偏好调整它们。

参考Density Independence in androidSupporting Multiple Screens

答案 2 :(得分:1)

我们不能将sp用于所有内容的原因是,当我们从设置增加字体大小时,我们只希望文本调整大小而不是按钮和其他视图。所以我们在其余部分使用dp,只使用文本sp。