ITmob-Ly
发布于 2022-08-30 / 1068 阅读
0

解决:This view is not constrained vertically: at runtime it will jump to the top unless you...

This view is not constrained vertically

项目中使用 androidx.constraintlayout.widget.ConstraintLayout 时Android Studio中的布局的子控件可能会提示如下错误:

This view is not constrained vertically: at runtime it will jump to the top unless you add a vertical constraint
This view is not constrained horizontally: at runtime it will jump to the left unless you add a horizontal constraint
This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime unless you add the constraints

例如布局文件是:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <!-- This view is not constrained vertically: at runtime it will jump to the top unless you add a vertical constraint -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        app:layout_constraintStart_toStartOf="parent"/>
    <!-- This view is not constrained horizontally: at runtime it will jump to the left unless you add a horizontal constraint -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        app:layout_constraintTop_toTopOf="parent"/>
    <!-- This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime unless you add the constraints -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>

这是因为 ConstraintLayout 中子控件的约束条件不完整,约束完整即可:水平和垂直的约束都要有。

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>