此视图不受约束,只有设计时间位置,因此除非添加约束,否则它将跳转到(0,0)
布局编辑器允许您将小部件放在画布上的任何位置,并使用设计时属性(例如layout_editor_absolute X)记录当前位置。这些属性不会在运行时应用,因此如果您将布局推送到在设备中,窗口小部件可能出现在与编辑器中显示的位置不同的位置。要解决此问题,请通过从边连接拖动来确保窗口小部件具有水平和垂直约束
答案 0 :(得分:19)
解决这个问题非常简单。只需单击小部件(例如按钮或文本框等),然后单击“推断约束”按钮。 您可以在附页图片或此Youtube链接中看到:https://www.youtube.com/watch?v=uOur51u5Nk0
答案 1 :(得分:1)
您可能拥有包含属性的小部件:
tools:layout_editor_absoluteX="someValue"
tools:layout_editor_absoluteY="someValue"
tools
命名空间仅在开发时使用,并且在安装apk时将被删除,因此所有布局都可能出现在TOP-LEFT位置上方。查看Tools Attributes Reference
解决这个问题: 您应该使用如下的布局约束:
layout_constraintLeft_toLeftOf
layout_constraintLeft_toRightOf
layout_constraintRight_toLeftOf
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf
您可以查看ConstraintLayout和Build a Responsive UI with ConstraintLayout的文档以获取更多详细信息
修改强>
在您发布的picture中,我尝试使用以下代码添加适当的约束,使TextView处于中心位置:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
答案 2 :(得分:0)
“ ConstraintsLayout中缺少约束”。由于未定义的约束而发生此错误。要解决此错误,请单击Widget(例如文本,按钮等),然后单击活动屏幕上方的推断约束。希望这可以解决您的查询