我有一个在其布局中使用以下填充的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种不同的设备上测试它:
对于两个三星Galaxies,我得到vert
和horz
的返回值为42.无论设备是垂直还是水平,都是如此。 (为什么他们不等于14,我不确定,但只要他们不变,我就满足了。)
但是,对于XOOM,当设备处于垂直状态时,我得到vert
和horz
的返回值为14。但是,当我将其转为水平时,vert
保持在14,horz
变为128(几乎是其垂直值的10倍)。
我的问题是,为什么在运行时会有这种自动更改?代码中没有引用它并使其发生变化(我知道这是因为其他设备没有这个问题)。
通常情况下,我对此并不在意,但在这种情况下,它确实让我的UI看起来非常时髦。我查了一下,但听起来并不像其他人在运行时对它们进行了更改。
答案 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横向设备,因此从该值文件夹获取维度值