2

我有一个 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(安卓版本 4.2.2)
  2. 三星 Galaxy S3(安卓版本 4.1.2)
  3. 摩托罗拉 XOOM(Android 版本 4.1.2)

对于三星 Galaxy,我得到了42verthorz42 的返回值。无论设备是垂直的还是水平的,这都是正确的。(为什么它们不等于 14,我不确定,但只要它们保持不变,我就满足了。)

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

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

通常,我不会太在意这个,但在这种情况下,它确实让我的 UI 看起来很时髦。我查了一下,但听起来其他任何人在运行时都没有更改它们的边距。

4

1 回答 1

1

每个项目中有 2 个dimen.xml。第一个在 values 文件夹中,另一个在 values-sw720dp-land 中。检查我们有的 values-sw720dp-land/dimen.xml

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

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

于 2013-09-26T05:53:51.753 回答