在android中定义视图时,我们使用dp作为边距,大小等,但对于文本大小,我们使用sp。 sp也与dp相同,但对于文本。为什么我们不能使用sp来做一切呢? 我知道两者之间的区别。我在问sp是否是dp的超集,为什么要使用dp?为什么不使用sp来指定视图中的所有大小?
答案 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 android和Supporting Multiple Screens
答案 2 :(得分:1)
我们不能将sp用于所有内容的原因是,当我们从设置增加字体大小时,我们只希望文本调整大小而不是按钮和其他视图。所以我们在其余部分使用dp,只使用文本sp。