ayout_constraintTop_toTopOf:将某一控件的顶部与另一控件的顶部对齐。
layout_constraintTop_toBottomOf:将某一控件的顶部与另一控件的底部对齐。
layout_constraintBottom_toTopOf:将某一控件的底部与另一控件的顶部对齐。
layout_constraintBottom_toBottomOf:将某一控件的底部与另一控件的底部对齐。
layout_constraintLeft_toLeftOf:将某一控件的左边与另一控件的左边对齐。
layout_constraintLeft_toRightOf:将某一控件的左边与另一控件的右边对齐。
layout_constraintRight_toLeftOf:将某一控件的右边与另一控件的左边对齐。
layout_constraintRight_toRightOf:将某一控件的右边与另一控件的右边对齐。
layout_constraintStart_toEndOf:将某一控件的起始边与另一控件的结束边对齐。
layout_constraintStart_toStartOf:将某一控件的起始边与另一控件的起始边对齐。
layout_constraintEnd_toStartOf:将某一控件的结束边与另一控件的起始边对齐。
layout_constraintEnd_toEndOf:将某一控件的结束边与另一控件的结束边对齐。
layout_constraintBaseline_toBaselineOf:将某一控件的基线与另一控件的基线对齐。
layout_constraintCircle:将两个控件在圆上对齐。
layout_constraintDimensionRatio:设置控件的宽高比。
layout_constraintHorizontal_bias:水平偏向,取值范围0-1,表示在垂直方向上的分布。
layout_constraintVertical_bias:垂直偏向,取值范围0-1,表示在水平方向上的分布。
layout_constraintGuide_begin:指定导航条的起始位置。
layout_constraintGuide_end:指定导航条的结束位置。
layout_constraintGuide_percent:指定导航条相对于父布局的位置百分比。
=====================分割线============================
权重使用方式
app:layout_constraintHorizontal_widget="1":该控件占比父类控件的竖向权重1(等同LinearLayout的 width="0dp" + widget="1")
app:layout_constraintVertical_widget="1";该控件占父类控件的横向权重1(等同LinearLayout的height="0dp" + widget="1")
单独使用app:layout_constraintHorizontal_widget="1"仅仅只是确定了控件的宽度权重是1,不能定位控件的位置,所以在使用的时候要注意添加其他属性
1 app:layout_constraintLeft_toLeftOf="xxx"控件的起始位置
2 app:layout_constraintRight_toRightOf="xxx"控件的结束位置
3 android:layout_widget="0dp"控件的宽度设置0
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/smart_mode_list"
android:layout_width="0px"
android:layout_height="@dimen/rebase_dp_254"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_smart_mode">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fl_rest_mode"
android:layout_width="0px"
android:layout_height="match_parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintRight_toLeftOf="@id/ivLine"
tools:ignore="MissingConstraints">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/ivLine"
android:layout_width="@dimen/rebase_dp_3"
android:layout_height="@dimen/rebase_dp_134"
android:src="@drawable/vertical_line"
app:layout_constraintLeft_toRightOf="@id/fl_rest_mode"
app:layout_constraintRight_toRightOf="@id/fl_projection_mode"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fl_projection_mode"
android:layout_width="0px"
android:layout_height="match_parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/ivLine"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/tv_projection_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
居中方式
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="math_parent"
android:layout_height="math_parent">
<!--类似LinearLayout布局的横向水平居中-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTop="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<!--类似LinearLayout布局的横向水平居中-->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
ConstraintLayout中有两个控件居中显示,间隔10dp
竖向链式布局app:layout_constraintHorizontal_chainStyle="packed"
横向链式布局app:layout_constraintVertical_chainStyle="packed"
chainStyle有三种:
spread:(默认)紧促的,
spread_inside
packed
具体xml布局
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0px"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/ivLine"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints">
//在这里使用chainStyle属性
<ImageView
android:layout_width="@dimen/rebase_dp_80"
android:layout_height="@dimen/rebase_dp_80"
android:src="@drawable/pet_mode_img"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_rest_mode"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小爪爪"
android:textColor="@color/text_color_AC42D5"
android:textSize="@dimen/rebase_sp_40"
android:maxLines="1"
android:layout_marginLeft="@dimen/rebase_dp_20"
app:layout_constraintBottom_toBottomOf="@id/iv_rest_mode"
app:layout_constraintLeft_toRightOf="@id/iv_rest_mode"
app:layout_constraintTop_toTopOf="@id/iv_rest_mode"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>
总结:ConstraintLayout使用方式需要考虑周全,能加上的就要加上。