左上角的 ConstraintLayout 视图

ConstraintLayout views in top left corner

每次我在 ConstraintLayout 中创建 ButtonTextView 等视图时,它们都会卡在顶角,而不是我放置它们的位置。

我试过新建activity和换模拟器,结果还是一样。

这是正在发生的事情的屏幕截图:

可能是什么问题?

Constraint Layout guides所述:

If a view has no constraints when you run your layout on a device, it is drawn at position [0,0] (the top-left corner).

You must add at least one horizontal and one vertical constraint for the view.

我猜你没有应用任何约束。

手动将约束应用到视图,或让布局编辑器使用 "Infer constraints" 按钮为您完成:

When you drop a view into the Layout Editor, it stays where you leave it even if it has no constraints... this is only to make editing easier

换句话说,视图将 "stay where you leave it" 直到您添加约束。

它在预览版中与您的应用程序看起来不同的原因是,您的 XML 中带有 tools: 的任何内容都是 going to be removed from the code when your app runs。这些选项仅适用于 Android Studio 布局编辑器,并不代表您在代码运行时应该看到的内容。

而且对于初学者来说可能会很麻烦,因为

a missing constraint won't cause a compilation error

不过

the Layout Editor indicates missing constraints as an error in the toolbar. To view the errors and other warnings, click Show Warnings and Errors (red button with number). To help you avoid missing constraints, the Layout Editor can automatically add constraints for you with the Autoconnect and infer constraints features

More details

解决此问题的一种快速简便的方法是单击组件(TextView、ImageView 等),然后单击推断约束按钮。它看起来像 2 个黄色加号。

推断约束图像

在 xml 中将此添加到按钮等

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.57"

然后在设计中发挥它。

祝你好运! :)

基本上这种类型的问题发生在你使用 ConstraintLayout 的时候。

  • 所以从 Android Studio 转到 Preview

  • Select那个按钮要设置在具体位置

  • 最后只需单击 infer constrains 按钮,正如我在 下图红圈上。

这就是全部 运行 项目,看看魔术

谢谢