前几天遇到一个非常奇葩的问题,我们的项目在索尼 xl39h这款机器上出现了缺失一行字的问题。
最开始认为是适配问题,就开始查这款手机的参数,发现这款手机分辨率是主流的1920*1080,6.44寸屏幕。
看着这个参数,我就蒙了,分辨率跟我手机的分辨率一模一样,而且项目中所有关于布局大小的地方全是用dp的,这怎么会出问题。
而屏幕的物理尺寸,我们不用关心的啊。
实在想不到问题之后,我就开始盯着问题反馈的图片,跟正常显示的图片,对比。
盯久了,发现,问题图片上的显示字体明显比正常显示的字体要大,然后开始查阅sp相关的东西,查到了这里:
sp:Scale-independent Pixels
这个有点像dp单位,但是它也根据用户的字体设置(font preference)缩放尺寸。
建议用这种尺寸单位来标注字体尺寸,这样它们将会因为屏幕密度和用户设定而调整。
然后就想到sp除了屏幕密度这一点影响,还有用户设定的影响。
然后开始实验,发现在手机的设置--显示--字体界面修改为大号字体后,果然有些地方出问题了。
写死高度的地方都出问题,哪怕你是用dp写死的高度。
到这里,就算是完全明白了原因,也再一次认识了sp。