16

android.support.constraint.ConstraintLayout用来布置简单卡片的内容视图。

我的 XML 每次都会随机更改:

  • 我切换到 Android Studio 的布局编辑器Design选项卡
  • 或者当我打开一个Preview窗格时(在这种情况下,更改在我的更改期间更频繁地发生)。

这些随机变化包括:

  • 删除我手动定义的布局边距(例如layout_marginEnd
  • 更改我手动输入的保证金值的值
  • 添加tools:layout_editor_absoluteX

问题:

  • 其他人体验过这个 Android Studio 的功能吗?
  • 如何关闭这个“功能”,这样我的布局就不会被破坏?
  • 在哪里向 Google 或 JetBrains 报告此错误?

请看一下这个文件差异,它是在切换到设计选项卡时自动生成的: 布局 XML 文件中自动更改的差异

PS.:我的 Android Studio 版本是2.2.3;我在 macOS Sierra 上运行它。

更新#1

正如建议的那样,在制作之后layout_height="match_parent",我很少得到修改,但是当我在 Layout Design'er 中编辑布局时,我的 XML 仍然混乱: 自动更改 #2 这次我想layout_marginTop通过设计 UI 设置(选择的行是我想要添加的) ,但我也得到了其他不需要的更改:

  • layout_marginStart移除;
  • app:layout_constraintBottom_toBottomOf引用的 ID 有一个“+”号前缀,这意味着这些 ID 是新声明的,所以当我使用Goto declaration功能时,我必须从列表中选择它 - 这不是所需的行为。
  • tools:layout_editor_absoluteX被添加。我可以忽略它,但仍然 - 不是我想要发生的事情。
4

4 回答 4

3

在我的情况下,删除布局约束并再次添加它修复了消失的边距。

我在 Android Studio 4.1.1 上。

于 2020-11-18T23:50:00.407 回答
1

我注意到 Android Studio 2.3 存在同样的问题,每次我在最近使用 ConstraintLayout 的项目中从文本视图转到设计视图时,代码都会自动更改。- 我很确定它会发生在 RelativeLayout 或您想要使用的任何其他布局中。

我猜这是与设计视图相关的某种类型的自动代码生成错误,我还没有找到关闭它的方法。

我不确定这是否有帮助,因为我相信您已经意识到这一点,但是如果您几乎完全在文本视图中工作,那么问题永远不会发生。

我偶尔会使用设计视图来开始我的布局,但是一旦我有一些工作,个人停留在文本视图中似乎对开发过程来说更快。

于 2017-07-31T23:17:53.673 回答
0

在我的情况下,升级到最新的 gradle 依赖有助于:

com.android.support.constraint:constraint-layout:1.0.2

我也开始使用0dp而不是match_parentforlayout_width

于 2017-09-15T09:21:25.473 回答
0

正如@JoeyJubb 提到的,使用layout_height="match_parent"解决了这个问题。至少 XML 没有被修改。虽然,有时预览生成不正确。

于 2017-01-31T10:53:52.710 回答