首页 > 其他分享 >Android中的ConstrainLayout的用法(上)

Android中的ConstrainLayout的用法(上)

时间:2024-10-14 12:21:37浏览次数:3  
标签:约束 layout 布局 ConstrainLayout ConstraintLayout 组件 Android 用法 view

Android中的ConstraintLayout(约束布局)是一种灵活的布局方式,它允许开发者通过定义视图之间的相对位置来创建复杂的用户界面。以下是对ConstraintLayout的详细解释:

一、基本介绍

ConstraintLayout是在2016年Google I/O大会上发布的布局方式,旨在解决复杂的页面层级嵌套过多的问题。它继承自ViewGroup,是view容器,能够用较少的视图层级创建出复杂的视图。ConstraintLayout最低兼容到API 9(即Android 2.3)。

二、引入方式

最简单、最直接的方式是在xml的design视图模式下,在左上角的Layouts中直接双击ConstraintLayout,然后会弹窗提示是否添加到依赖,点击ok等待依赖成功即可。也可以在当前Module的build.gradle中添加依赖项来引入ConstraintLayout,例如:

dependencies {  
    implementation 'androidx.constraintlayout:constraintlayout:2.x.x' // 注意版本号,根据实际情况选择  
}
三、基本使用
  1. 添加约束:约束是用来控制view相对位置的参数信息。在布局编辑器中,将某个view拖到编辑区域之后,会在该view周边生成一个边线,四个角上是白色填充的小方块(锚点),四条边线中间是空心圆圈(把手)。点击小圆圈并按住不松手(此时该小圆圈被称为把手),然后拖拽到另一个锚点位置后松手,就创建好了一个约束条件。该约束条件会有一个默认的margin值。将view添加到ConstraintLayout之后,至少需要给该view分别在X轴和Y轴上各定义一个约束条件。

  2. 约束类型

    • 相对于父布局的约束:把手与父布局的边界相连接,父布局的边界作为锚点。
    • 相对于兄弟控件的约束:把手与其他view相连接,其他view的把手作为锚点。
    • 对齐式约束:A的边线或中间线与B的边线或中间线对齐,分为不带margin的对齐和带margin的对齐。
    • 基线对齐式约束:基线与基线连接形成的约束。
    • 辅助线约束:基于辅助线的约束条件,把手连接到辅助线。辅助线可以是水平的,也可以是垂直的,该辅助线只在代码中对开发者可见,app部署之后在页面中是看不到的。
  3. 常用属性

    • layout_constraintLeft_toLeftOflayout_constraintLeft_toRightOflayout_constraintRight_toLeftOflayout_constraintRight_toRightOf:控制组件左右的相对位置。
    • layout_constraintTop_toTopOflayout_constraintTop_toBottomOflayout_constraintBottom_toTopOflayout_constraintBottom_toBottomOf:控制组件上下的相对位置。
    • layout_constraintStart_toEndOflayout_constraintStart_toStartOflayout_constraintEnd_toStartOflayout_constraintEnd_toEndOf:用于支持从右到左(RTL)的布局方向。
    • layout_constraintBaseline_toBaselineOf:用于基线对齐。
    • layout_constraintHorizontal_biaslayout_constraintVertical_bias:用于在水平或垂直方向上对组件进行偏移,取值为0到1之间的浮点数,表示组件在其约束范围内的偏移比例。
  4. MATCH_CONSTRAINT(0dp):当将组件的宽度或高度设置为0dp时,并为其添加相应的约束条件,该组件将根据其约束条件来确定其大小。这种方式可以灵活地控制组件的大小,使其适应不同的屏幕尺寸和分辨率。

四、高级用法

  1. 链(Chains):链是一种将多个组件相互连接并沿同一方向对齐的方式。可以通过在组件之间创建约束来形成链,并指定链的方向(水平或垂直)。链中的组件可以自动调整其大小和位置,以适应不同的屏幕尺寸和分辨率。
  2. 屏障(Barrier):屏障是一种用于定义一组组件最外边缘的辅助线。它可以根据一组组件的位置动态地调整其位置,从而确保其他组件可以正确地与其对齐或偏移。
  3. 占位符(Placeholder):占位符用于在布局中预留一个位置,以便稍后替换为其他布局或组件。这可以在不修改现有布局的情况下动态地添加或替换组件。
  4. 组(Group):组允许将多个组件组合在一起,并可以对整个组进行可见性、动画等属性的控制。这可以方便地管理一组相关的组件,并减少代码的重复。
  5. 流式布局(Flow):流式布局允许将一组组件按照指定的方向(水平或垂直)进行排列,并可以自动换行以适应屏幕尺寸。这可以方便地创建复杂的、自适应的布局。

五、注意事项

  1. 避免过度约束:过多的约束可能会导致布局变得复杂且难以维护。因此,在添加约束时要考虑其必要性和合理性。
  2. 注意性能:虽然ConstraintLayout具有较高的性能优势,但过度复杂的布局仍然可能会影响应用的性能。因此,在设计布局时要尽量保持简洁和高效。
  3. 兼容性:虽然ConstraintLayout最低兼容到API 9,但在使用某些高级特性时可能需要更高的API级别。因此,在开发过程中要注意兼容性问题。

综上所述,ConstraintLayout是一种强大且灵活的布局方式,它允许开发者通过定义视图之间的相对位置来创建复杂的用户界面。通过掌握其基本用法和高级特性,开发者可以更加高效地创建自适应、可维护的Android应用界面。

标签:约束,layout,布局,ConstrainLayout,ConstraintLayout,组件,Android,用法,view
From: https://blog.csdn.net/2401_83566316/article/details/142915198

相关文章

  • 猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程
    ......
  • Android 车载应用开发指南 - CAN Bus 协议详解
    ​在现代车载应用开发中,CAN(ControllerAreaNetwork)总线协议扮演着不可或缺的角色。作为一个汽车内部网络的标准协议,CANBus已经成为了车载系统通信的基础。而在Android车载应用开发的过程中,理解并利用好CANBus协议是必不可少的。那么,CANBus到底是什么?它又是如何在车载......
  • 包解决!Android Studio报错:Duplicate class kotlin.collections.jdk8.CollectionsJDK8K
    Executionfailedfortask':app:checkDebugDuplicateClasses'.>Afailureoccurredwhileexecutingcom.android.build.gradle.internal.tasks.CheckDuplicatesRunnable>Duplicateclasskotlin.collections.jdk8.CollectionsJDK8Ktfoundinmodul......
  • Android15车载音频之Virtualbox中QACT实时调试(八十八)
    简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》......
  • Android12.0 需求开发篇+问题解决篇之IPC socket通信
    1.需求描述        应用组C程序客户端和Android系统层Java服务端进行通信需求,这里其实在Android系统下IPC的方式有很多,像Binder作为Android特有的跨进程通信,但是应用组的同事之前是非Android系统下进行应用开发,使用的都是socket这种通用IPC通信。这里为兼容应用组代码......
  • 基于Android的家庭理财管理和实现---附源码57138
    摘 要随着经济的发展和人们生活水平的提高,家庭理财管理变得愈发重要。然而,许多家庭对于如何有效地管理个人财务以及制定预算计划感到困惑。因此,本研究旨在提供一种简单、易用且功能全面的家庭理财管理工具。本论文旨在设计和开发一款基于Android平台的家庭理财管理APP。......
  • android试题编号:2-2-8车载媒体播放 App
    (1)任务描述中控大屏仪表屏幕中间显示媒体组件,组件内上方显示正在播放的媒体信息例如“歌曲名称”“音视频名称”信息栏、“音量显示”。信息栏下方显示播放控制按钮,“播放/暂停”“上一曲下一曲”“音量滑块”“静音”,在操控设备中点击“播放/暂停”,仪表屏中的按钮随之切换“......
  • 瑞芯微RK3566/RK3568 Android11使用OTA升级固件方法,深圳触觉智能鸿蒙开发板演示,备战第
    本文介绍瑞芯微RK3562/RK3568在Android11系统OTA(U盘/TF卡)升级固件方法,使用的是触觉智能的PurplePiOH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款鸿蒙开发主板。1、OTA包生成在源码根目录上执行以下命令编译OTA包makeinstallclean#make-j4#......
  • 手机解锁方法:8个顶级的 Android 手机解锁软件
    一般来说,太简单的密码是不安全的,所以我们设置一个安全的密码,可能会稍微复杂一点。然而,我们可能经常会忘记复杂的密码并锁定我们的Android智能手机。8个顶级的Android手机解锁软件如果您遇到过这种情况并且正在寻找一种有效的方法来解锁您的Android设备而不丢失数据,您......
  • C++ 中 `const` 的用法
    C++中const的用法1.在成员函数中的const示例:voidprintWindow()const{//...}含义和特性:函数不会修改对象状态:声明为const的成员函数承诺不会修改该类的任何非const成员变量。可以被常量对象调用:const成员函数可以被常量对象调用,确......