我一定是做错了什么
我有一个布局 xml 和线性布局,这个线性布局有 2 个按钮(相当大),并且重力设置为线性布局的垂直和水平中心。在我为 Nexus One 3.7 设计的屏幕上看起来很棒
所以在eclipse中我将nexus one(使用下拉菜单)更改为10.1屏幕,一切都显示正常,但我的按钮太小了,它们似乎没有保持外观和感觉大小..
难道我做错了什么..
我想要做的是让我的屏幕在任何设备上看起来几乎相同 - 我虽然 SP 是要走的路?
提前致谢
我一定是做错了什么
我有一个布局 xml 和线性布局,这个线性布局有 2 个按钮(相当大),并且重力设置为线性布局的垂直和水平中心。在我为 Nexus One 3.7 设计的屏幕上看起来很棒
所以在eclipse中我将nexus one(使用下拉菜单)更改为10.1屏幕,一切都显示正常,但我的按钮太小了,它们似乎没有保持外观和感觉大小..
难道我做错了什么..
我想要做的是让我的屏幕在任何设备上看起来几乎相同 - 我虽然 SP 是要走的路?
提前致谢
所以我在 Galaxy Tab 和 Tab 10.1" 之间切换时也遇到了同样的问题。Android 将每个屏幕分类为 bin,并相应地使用 SP。尝试在两个屏幕上运行以下代码:
Display d = getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
d.getMetrics(dm);
Log.d("DISPLAYINFO", "Classified density: " + dm.densityDpi + ", scaled density: " + dm.scaledDensity + ", actual densities: x: " + dm.xdpi + ", y: " + dm.ydpi);
您可能会看到较小的平板电脑被分类在更高密度的垃圾箱中,因此一切都被放大以尝试看起来相同。这有点烦人。
我怀疑按钮缩放到正确的像素数,但是当您切换到平板电脑视图时,设计师正在缩小图像以适合 10.1" 屏幕。如果您单击设计师左上角的小图标,数字 1 在圆圈内,您将看到像素以 1:1 映射时的外观
Scale Indepent Pixel(或Density Independent Pixel)有利于抵消不同屏幕(像素)密度的影响。因此,您所做的比较不是正确的。要真正看到使用 DIP(或 SIP)时的效果,您应该比较物理尺寸大致相同但屏幕密度不同的两个屏幕上的布局外观。(尝试两个按钮,一个宽度指定为 x px 宽度,另一个宽度指定为 x dp。
此外,如果您真的希望根据屏幕的物理尺寸确定按钮大小,这是一种方法。不要在 SIP 中指定大小,而是为该值指定一个“dimen”资源。然后,您可以为大屏幕和小屏幕指定不同的尺寸值。
dimen 的用法示例:将宽度指定为:
android:layout_width="@dimen/view_width"
然后创建一个文件 res/values/dimens.xml
<resources>
<dimen name="view_width">10dp</dimen>
</resources>
创建另一个文件 res/values-large/dimens.xml
<resources>
<dimen name="view_width">20dp</dimen>
</resources>
如果您忘记定义<uses-sdk>
in AndroidManifest.xml
,您可能会看到与布局等相关的奇怪问题。
因此AndroidManifest.xml
,首先检查一下是否定义了以下示例:
<uses-sdk android:minSdkVersion="5"
android:targetSdkVersion="9" />
如果问题仍然存在,请发布您的资源xml,以便检查代码。