我正在使用android.support.constraint.ConstraintLayout
来布局简单卡片的内容视图。
我每次在以下情况下都会随机更改XML:
Design
标签Preview
窗格时(在这种情况下,在我的更改期间更改会发生更改)。这些随机变化包括:
layout_marginEnd
)tools:layout_editor_absoluteX
值问题:
请查看此文件diff,它是在切换到“设计”选项卡时自动生成的:
PS。:我的Android Studio版本为2.2.3
;我在macOS Sierra上运行它。
正如所建议的,在制作layout_height="match_parent"
之后,我不经常修改,但是当我在Layout Design'er中编辑布局时,我的XML仍然搞砸了:
这次我想通过设计UI设置layout_marginTop
(选择的行是我想要添加的),但我还得到了其他不需要的更改:
layout_marginStart
已删除; app:layout_constraintBottom_toBottomOf
引用的ID前缀为“+”符号,这意味着,这些ID是新声明的,所以当我使用Goto declaration
功能时,我必须从中选择它列表 - 不是理想的行为。tools:layout_editor_absoluteX
已添加。我可以忽略它,但仍然 - 不是我想要发生的事情。答案 0 :(得分:1)
我注意到Android Studio 2.3存在同样的问题,每次从使用ConstraintLayout的最近项目的文本视图到设计视图时,代码都会自动更改。 - 我很确定它会发生在RelativeLayout或你想要使用的其他布局上。
我想这是与设计视图相关的某种类型的自动代码生成错误,我还没有找到办法将其关闭。
我不确定这会有什么帮助,因为我确信你已经意识到这一点,但如果你几乎完全在文本视图中工作,问题就永远不会发生。
我偶尔会使用设计视图来开始我的布局,但是一旦我有了一些工作,在开发过程中保持文本视图个人似乎更快。
答案 1 :(得分:0)
正如@JoeyJubb所提到的,使用layout_height="match_parent"
解决了这个问题。至少XML不会被修改。虽然,有时候预览生成不正确。
答案 2 :(得分:0)
在我的案例中升级到最新的gradle dependecy帮助:
com.android.support.constraint:constraint-layout:1.0.2
此外,我开始使用0dp
而不是match_parent
来layout_width
答案 3 :(得分:0)
在我的情况下,删除布局约束并再次添加它可以修复消失的边距。
我在使用Android Studio 4.1.1。