Android设备在运行时自行更改水平边距

时间:2013-09-26 05:10:46

标签: android xml user-interface runtime margins

我有一个在其布局中使用以下填充的XML:

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

其中@dimen/activity_vertical_margin@dimen/activity_horizontal_margin均为14dp

在我的Java类中,我使用toast在运行时看到实际的边距是什么:

int vert = (int) getResources().getDimension(R.dimen.activity_vertical_margin);
int horz = (int) getResources().getDimension(R.dimen.activity_horizontal_margin);
Toast.makeText(getApplicationContext(), "vert: " + vert + "\n" + "horz: " + horz, Toast.LENGTH_LONG).show();

我正在3种不同的设备上测试它:

  1. 三星Galaxy S4(Android版本4.2.2)
  2. 三星Galaxy S3(Android版本4.1.2)
  3. Motorola XOOM(Android版本4.1.2)
  4. 对于两个三星Galaxies,我得到verthorz的返回值为42.无论设备是垂直还是水平,都是如此。 (为什么他们不等于14,我不确定,但只要他们不变,我就满足了。)

    但是,对于XOOM,当设备处于垂直状态时,我得到verthorz的返回值为14。但是,当我将其转为水平时,vert保持在14,horz变为128(几乎是其垂直值的10倍)。

    我的问题是,为什么在运行时会有这种自动更改?代码中没有引用它并使其发生变化(我知道这是因为其他设备没有这个问题)。

    通常情况下,我对此并不在意,但在这种情况下,它确实让我的UI看起来非常时髦。我查了一下,但听起来并不像其他人在运行时对它们进行了更改。

1 个答案:

答案 0 :(得分:1)

每个项目都有2个dimen.xml。 第一个在values文件夹中,另一个在values-sw720dp-land中。 签入值-sw720dp-land / dimen.xml我们有

<dimen name="activity_horizontal_margin">128dp</dimen>

由于摩托罗拉XOOM(Android版本4.1.2)是720横向设备,因此从该值文件夹获取维度值