约束布局constraintlayout

本文介绍了Android约束布局ConstraintLayout的使用,包括控件定位、Guideline辅助线、Barrier控件、文本基线对齐、尺寸约束、偏移属性bias、Placeholder占位符、Group的隐藏显示、链式约束、角度约束和比例宽高等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束布局:最少给一个控件两条边设置属性才能固定住控件

1.控件在左上角:控件的左边对父容器的左边,控件的上边对父容器的上边

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" 

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

left---对应--start

right---对应---end

控件在父容器中间:

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

2. Guideline辅助控件---辅助线(宽高任意设置)

<androidx.constraintlayout.widget.Guideline
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="horizontal"
    app:layout_constraintGuide_end="110dp" />

水平线,layout_constraintGuide_end距离底部110dp

               layout_constraintGuide_begin="110dp"距离顶部110dp

<androidx.constraintlayout.widget.Guideline
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="vertical"
    app:layout_constraintGuide_begin="110dp" />

垂直线,layout_constraintGuide_begin距离左边110

layout_constraintGuide_end距离右边110

<androidx.constraintlayout.widget.Guideline
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>

app:layout_constraintGuide_percent="0.5"   值为0-1之间的小数

3.辅助控件Barrier控件

属性:barrierDirection 设置屏障位置
        constraint_referenced_ids 加入的控件

app:barrierDirection="right"
app:constraint_referenced_ids="textview1,textview2"

4. 文本基线 layout_constraintBaseline_toBaselineOf="@id/tv_name"   

两个 TextView 的高度不一致,但是又希望他们文本基线对齐,这个时候就可以使用

5. 尺寸约束

使用 wrap_content,让控件自己计算大小
当控件的高度或宽度为 wrap_content 时,可以使用下列属性来控制最大、最小的高度或宽度:

android:minWidth 最小的宽度

android:minHeight 最小的高度

android:maxWidth 最大的宽度

android:maxHeight 最大的高度

6.官方不推荐在 ConstraintLayout 中使用 match_parent,可以设置 宽或高为0dp 配合约束代替 match_parent

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="CBD0"
    android:gravity="center"
    android:textSize="30sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"/>

7.偏移属性bias 取值大于等于0 小于等于1

注意:锚点相同,bias设置无效

<TextView
    android:id="@+id/TextView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="简单爱"
    android:background="@color/teal_700"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

8.Placeholder 指的是占位符,给Placeholder控件设置content可以使别的控件移动到此控件上

<androidx.constraintlayout.widget.Placeholder
    android:id="@+id/placeholder"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:content="@+id/textview"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#cccccc"
    android:padding="16dp"
    android:text="TextView"
    android:textColor="#000000"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

9.Group 可以把多个控件同时隐藏或显示

<androidx.constraintlayout.widget.Group
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    app:constraint_referenced_ids="textview1,textview2"/>

10.链

如果两个或以上控件通过下图的方式约束在一起,就可以认为是他们是一条链

纵向原理也是这样

注意:两端要与parent约束

一条链的第一个控件是链头,在这个控件里设置

layout_constraintHorizontal_chainStyle

可以改变整条链的样式

给链设置权重

layout_constraintHorizontal_weight

将宽度设置为0dp,然后给控件添加权重属性

11.角度约束

<TextView
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:background="#E3C97D"
    app:layout_constraintCircle="@id/tv"
    app:layout_constraintCircleAngle="120"
    app:layout_constraintCircleRadius="150dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

layout_constraintCircle圆心

layout_constraintCircleAngle角度

layout_constraintCircleRadius半径

12.比例宽高

layout_constraintDimensionRatio="2:1"

ConstraintLayout中可以对宽高设置比例,前提是宽或高其中一个设置为0dp,这样比例才会生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值