【问题标题】:Android Device Changes Horizontal Margin by Itself at RuntimeAndroid 设备在运行时自行更改水平边距
【发布时间】:2013-09-26 05:10:46
【问题描述】:

我有一个在其布局中使用以下填充的 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. 摩托罗拉 XOOM(Android 版本 4.1.2)

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

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

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

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

【问题讨论】:

    标签: android xml user-interface runtime margins


    【解决方案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 横向设备,它从这个值文件夹中获取维度值

    【讨论】:

    • 太棒了!这正是问题所在。 :) 谢谢!
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2016-04-26
    • 2014-06-05
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多