This view is not constrained vertically. At runtime it will jump to the left unless you add a vertical constraint

enter image description hereNew Layout editor in Android Studio 2.2 keeps showing this error on views like EditText and Buttons. kindly help.Also, any links that help in onboarding with the new constraint layout would be appreciated.

code:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
android:id="@+id/activity_main"
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"
tools:context="com.set.email.MainActivity"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="81dp">


<TextView
android:text="To:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="7dp"
tools:layout_editor_absoluteY="4dp"
android:id="@+id/textTo"/>


<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="24dp"
android:id="@+id/editTo"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


<EditText
android:layout_width="384dp"
android:layout_height="42dp"
android:inputType="textPersonName"
android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="94dp"
android:id="@+id/editSubject"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


<EditText
android:layout_width="384dp"
android:layout_height="273dp"
android:inputType="textPersonName"
android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="179dp"
android:id="@+id/editMessage"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
tools:layout_constraintLeft_creator="50"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


<Button
android:text="Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="140dp"
tools:layout_editor_absoluteY="454dp"
android:id="@+id/btnSend"
app:layout_constraintLeft_toLeftOf="@+id/editMessage"
tools:layout_constraintLeft_creator="0"
app:layout_constraintRight_toRightOf="@+id/activity_main"
android:layout_marginEnd="16dp"
tools:layout_constraintRight_creator="0"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>




</android.support.constraint.ConstraintLayout>
195750 次浏览

约束布局旨在减少布局层次结构,提高布局性能(从技术上讲,你不必为不同的屏幕尺寸进行更改,没有重叠,工作原理类似于手机上的魅力,以及带有相同约束的标签)。下面是在使用新的布局编辑器时消除上述错误的方法。

enter image description here

单击小圆并将其向左拖动,直到圆变成绿色,以添加一个左约束(给出一个数字,比如 x dp)。对其他边重复此操作,如果下面还有其他视图,则将底部约束保留为空白。 enter image description here

编辑: 根据开发人员网站,您可以将每个视图移动到您希望的位置,然后单击 Infer Constraint 自动创建约束,而不是在布局中为每个视图添加约束。更多 给你

您需要从布局的边缘拖动 EditText,而不仅仅是其他小部件。还可以通过将小部件周围的约束点拖动到屏幕边缘来添加指定的约束。

修改后的代码看起来类似于下面这样:

    app:layout_constraintLeft_toLeftOf="@+id/router_text"
app:layout_constraintTop_toTopOf="@+id/activity_main"
android:layout_marginTop="320dp"
app:layout_constraintBottom_toBottomOf="@+id/activity_main"
android:layout_marginBottom="16dp"
app:layout_constraintVertical_bias="0.29"

转到 Design,右键单击您的 Widget, 约束布局 > 推断约束。你可以看到一些代码已经自动添加到你的文本。

只需将此代码复制到将要拖动的所有组件。

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

例如:

<TextView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="To:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="7dp"
tools:layout_editor_absoluteY="4dp"
android:id="@+id/textTo"/>
Follow these steps:
Right click on designing part > Constraint Layout > Infer Constraints

如果推断 Constraints仍然给出错误,只需使用下面的代码:

app:layout_constraintBottom_toBottomOf="parent"

转到小部件(按钮或其他视图)指示错误的 XML 布局文本,将光标聚焦在那里,然后按 alt + enter并选择缺少的约束属性。

从 Android Studio v3及以上版本中,推断约束从下拉列表中移除。

使用设计预览上面的工具栏菜单中的 魔杖图标,这里有“ 推断约束”按钮。单击此按钮,这将自动添加一些行在文本字段和红线将被删除。

enter image description here

比如我有这个

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

像这样使用 RelativeLayout 布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

只需切换到设计视图,并找到相关的小部件。抓取小部件边界上的一个点,并将其连接到屏幕的适当边缘(或其他小部件上的一个点)。

例如,如果小部件是一个工具栏,只需抓取最顶端的点并将其连接到手机屏幕的最顶端边缘,如图所示。

Design View

你必须把 androidx.constraintlayout.widget.ConstraintLayout改成 RelativeLayout

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

这对我帮助很大