Android:SP(与比例无关的像素)似乎不起作用,在每个设备上看起来真的不同

时间:2012-09-11 07:39:01

标签: android android-layout android-emulator

我一定是做错了什么,

我有一个布局xml和线性布局,这个线性布局有2个按钮(相当大),重力设置为垂直和水平布局的中心位置..在我为Nexus设计的屏幕上看起来很棒一个3.7“

所以在eclipse中我将nexus one(在下拉菜单中)更改为10.1屏幕,一切都显示正常但我的按钮太小了,它们似乎没有保持外观和感觉尺寸..

我做错了什么..

我想要做的是让我的屏幕在任何设备上都看起来几乎一样 - 我虽然SP是要走的路?

提前致谢

3 个答案:

答案 0 :(得分:0)

如果您忘记在<uses-sdk>中定义AndroidManifest.xml,您可能会看到与布局等相关的奇怪问题。

因此,请先检查您的AndroidManifest.xml,看看是否定义了以下示例:

<uses-sdk android:minSdkVersion="5"
          android:targetSdkVersion="9" />

如果问题仍然存在,请发布您的资源xml,以便检查代码。

答案 1 :(得分:0)

所以我在Galaxy标签和标签10.1“之间切换时也一样.Android将每个屏幕分类为垃圾箱,并相应地使用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);

您可能会看到较小的平板电脑被分类到更高密度的垃圾箱中,因此所有内容都会按比例放大以尝试看起来相同。这有点烦人。

答案 2 :(得分:0)

我怀疑按钮缩放到正确的像素数,但是当你切换到平板电脑视图时,设计师正在缩小图像以适应10.1英寸的屏幕。如果你点击左上角的小图标设计师,在圆圈内的数字1,您将看到像素映射时的外观1:1

刻度独立像素(或密度独立像素)有助于抵消不同屏幕(像素)密度的影响。所以,你所做的比较并不正确。要在使用DIP(或SIP)时真正看到效果,您应该在两个屏幕上比较两个屏幕上布局的外观和感觉,但物理尺寸大致相同但屏幕密度不同。 (尝试两个按钮,一个宽度指定为x px宽度,另一个宽度x dp。

此外,如果您真的希望根据屏幕的物理尺寸确定按钮大小,这是一种方法。不是在SIP中指定大小,而是为该值指定“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>