我已经制作了几个值文件夹和dimen.xml文件,用于为不同的屏幕尺寸配置我的应用程序。 Android Studio中的预览可以很好地显示它们,但是当我在手机上运行应用程序时,这些尺寸不会生效。 Android Studio布局中显示的布局和手机上显示的布局不同。
例如,在我的nexus 5上,应用程序应该从 values-w640dp / dimen.xml 中读取维度,但是,它会从 values / dimen.xml 中读取它们奇怪的原因。
我该怎么做才能解决它?
以下是截图。
Android Studio预览快照(Nexus 5)
Nexus 5手机屏幕截图:
答案 0 :(得分:1)
所以dp使用以下公式计算:
pixels / dp = dpi / 160dpi or pixels / dp = density
看device metrics,Nexus 5的密度为3,所以:
dp = pixels / density
dp = 1920px / 3 = 640dp
dp = 1080px / 3 = 360dp
使用 values-sw600dp 无法修复它,因为它不是屏幕的实际最小宽度,因为它也可以是360.所以你应该使用 values-sw300dp 。但请注意,这涵盖了各种各样的设备。 values-sw600dp 通常以平板电脑为目标。
我也遇到了设备的真实分辨率与仿真器创建的分辨率不匹配的问题,也是Nexus 5,因此请务必检查AVD屏幕并确保分辨率与设备的真实分辨率相匹配。例如,Nexus 5应该是1920x1080而且它是。如果您遇到此问题,请重新创建模拟器或完全尝试不同的模拟器。