Android约束布局(ConstraintLayout)常用属性

目录

[1. 基本约束属性案例](#1. 基本约束属性案例)

[2. 边距属性案例](#2. 边距属性案例)

[3. 尺寸控制属性案例](#3. 尺寸控制属性案例)

[4. 位置控制属性案例](#4. 位置控制属性案例)

[5. 其他实用属性案例](#5. 其他实用属性案例)


1. 基本约束属性案例

  • ​​相对父容器约束​​:
XML 复制代码
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:text="按钮"/>

解释 :按钮固定在父容器的左上角(左边缘对齐父容器的左边缘,上边缘对齐父容器的上边缘)

  • ​​相对其他视图约束​​:
XML 复制代码
<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/button"
    app:layout_constraintTop_toTopOf="@id/button"
    android:text="按钮2"/>

解释 :按钮2位于按钮1的右侧,并且顶部与按钮1对齐

2. 边距属性案例

XML 复制代码
<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@id/button"
    android:layout_marginTop="16dp"
    android:text="按钮3"/>

解释 :按钮3位于按钮1下方16dp处,左边缘与父容器对齐

3. 尺寸控制属性案例

  • ​​MATCH_CONSTRAINT(0dp)使用​​:
XML 复制代码
<Button
    android:id="@+id/button4"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginHorizontal="16dp"
    android:text="宽度填满父容器(左右各留16dp边距)"/>

解释 :按钮宽度填满父容器,但左右各保留16dp边距

  • ​​比例约束​​:
XML 复制代码
<ImageView
    android:id="@+id/imageView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintDimensionRatio="H,16:9"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:src="@drawable/sample"/>

解释 :图片视图宽度填满父容器,高度按16:9的比例自适应

4. 位置控制属性案例

  • ​​偏置(Bias)使用​​:
XML 复制代码
<Button
    android:id="@+id/button5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintHorizontal_bias="0.3"
    android:text="水平30%位置"/>

解释 :按钮水平方向上位于30%的位置(左30%,右70%)

  • ​​链式布局(Chains)​​:
XML 复制代码
<Button
    android:id="@+id/buttonA"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@id/buttonB"
    app:layout_constraintHorizontal_chainStyle="spread"
    android:text="A"/>

<Button
    android:id="@+id/buttonB"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/buttonA"
    app:layout_constraintRight_toLeftOf="@id/buttonC"
    android:text="B"/>

<Button
    android:id="@+id/buttonC"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/buttonB"
    app:layout_constraintRight_toRightOf="parent"
    android:text="C"/>

解释 :三个按钮水平均匀分布,形成一条水平链

5. 其他实用属性案例

  • ​​基线对齐​​:
XML 复制代码
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="文本1"
    android:textSize="24sp"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/textView1"
    app:layout_constraintBaseline_toBaselineOf="@id/textView1"
    android:text="文本2"
    android:textSize="16sp"/>

解释 :文本2与文本1基线对齐,尽管它们的文字大小不同

  • ​​引导线(Guideline)使用​​:
XML 复制代码
<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/guideline"
    app:layout_constraintTop_toTopOf="parent"
    android:text="位于屏幕右侧50%"/>

解释 :按钮位于垂直方向50%的位置(屏幕中间)的右侧

  • ​​屏障(Barrier)使用​​:
XML 复制代码
<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="可变长度文本1"/>

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/text1"
    android:text="另一个可变长度文本2"/>

<androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="end"
    app:constraint_referenced_ids="text1,text2"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toRightOf="@id/barrier"
    app:layout_constraintTop_toTopOf="parent"
    android:text="按钮"/>

解释 :按钮始终位于text1和text2中最右侧的那个视图的右侧,无论哪个文本更长

相关推荐
驰骋工作流10 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
传奇开心果编程11 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
方白羽15 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app
weixin_5633714715 小时前
Android Studio 2024 版 Device Explorer 打开方法
android·ide·android studio
AIsoft_868918 小时前
职场音频文件怎么整理?录音APP有哪些用法
android·音视频
booboosui18 小时前
第一批个人 Agent 用户正在卸载,问题不在模型,在它住在哪儿
android
洞见前行18 小时前
点击图标到内容出现,你的 App 在这几秒里做了什么:Android 冷启动全链路优化实战
android·性能优化·android studio
凯基迪科技18 小时前
芯片UID绑定修改 加密与逆向修改思路分析
android
Liben20 小时前
Weex开发踩坑记录
android·前端·ios
救救孩子把1 天前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务