爱不释手的ConstraintLayout布局

ConstraintLayout——约束性布局学习 ConstraintLayout简介 Constraint Layout是Google在2016年的Google I/O大会上提出的一个可以灵活控制子控件的位置和大小的新布局。并且其号称可以实现布局最大程度的扁平化。 ConstraintLayout优点 我们知道项目中的布局嵌套问题对我们的项目性能有着不小的威胁。布局能实现扁平化的话会让软件性能得到很大的提升。所以我们在开发过程中都会尽... 阅读详情

好久没有更新博客了,主要是最近太忙了。其实ConstraintLayout这个布局早都有了,一直没有使用过,所以看到有很多网站都有介绍。但是,感觉很多都是写的很乱或者写的很模糊让人看的好像使用起来很麻烦的样子。所以自己想写一篇博客介绍一下它的使用方法,其实真的好用又简单。

  • 使用之前你的Android studio 的版本必须是2.3以上的才可以使用这个布局控件,否则你发现你无论怎么在build.gradle文件中添加官方依赖
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    都是没有什么用的。so,如果你想体验这个控件那么就先升级一下你的Android studio吧。(现在的最高版本好像是3.0的)
  • 好了,就像我刚才说的如果你的AS是2.3版本以上的话,你新创建一个项目的时候AS就会自动帮你引入这个依赖。并且如果你是从项目中直接创建一个Activity的话,默认的根部局就是这个ConstraintLayout。废话不多说,接下来就具体说一下怎么使用:
    • 你跟这个我看这个布局就可以很快的入门这个布局的时候。感觉这个布局最重要的一点就是你一定要懂得约束力这个词。“约束力”是这篇博客也是这个布局最重要的点。
    • 先让我们看一个布局:
    • 这里写图片描述
      当我们看到这个布局的时候一般都会想到这里面肯定用布局嵌套。如果你使用ConstraintLayout布局的话就不需要布局嵌套,只用一个父布局就可以了。
  • Ok,ConstraintLayout这个布局的重点就是约束力,首先如果你想让最左边的头像(ImageView)放到中间的时候。那么约束它的就是它父布局的上面和下面。所以你需要在ImageView的属性里面添加这两行代码,它的含义就是自己的顶部依赖父布局的顶部,自己的底部依赖父布局的底部。这样刚好就能够是ImageView在父布局的中间了。
app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintTop_toTopOf="parent"

然而你心中会有疑问了,这样这个头像只是在父布局的上下约束,但是它却在布局的左边。很好,这个时候要给ImageView的左边一个约束,也是相对于父布局的。这句代码的意思就是ImageView的左边和父布局的左边有一个约束。这样ImagView就在父布局的左边了。

app:layout_constraintLeft_toLeftOf="parent"

此时你还会有疑问,我是把ImageView的左边依赖父布局,但是为什么会左边的间距。因为此时,ImageView左边有父布局的约束,所以给ImageView设置android:layout_marginLeft这个属性是起作用的。我们设置ImageView距离左边距为10dp。新手刚使用ConstraintLayout的时候设置这个margin属性会不起作用,那是因为你没有给他margin方向的约束,只有先有了约束margin才会起作用。

android:layout_marginLeft="@dimen/dp_10"
 <ImageView
        android:id="@+id/iv_mine_friend_avatar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="@dimen/dp_10"
        android:src="@mipmap/img1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginStart="@dimen/dp_10"/>
  • 接下来就是显示用户的名字了,它需要在头像的上面(ImageView)的右边,并且要在ImageView的头部的上面,所以只用给它两个约束就可以了。名字的左边需要在头像的右边app:layout_constraintLeft_toRightOf="@+id/iv_mine_friend_avatar"
    名字的上面需要和头像的上面齐app:layout_constraintTop_toTopOf="@+id/iv_mine_friend_avatar"
    因为有了左边的约束所以可以设置左边的margin值android:layout_marginLeft="@dimen/dp_10"
    也可以设置上面的margin值android:layout_marginTop="@dimen/content_small"

  • 其他的布局基本上都是一样的,下面重点说一下下面item的那一条黑的线。如果你想在ConstraintLayout设置一个控件的宽度match_parent那是不允许这样写的。你只能这样写:

 app:layout_constraintLeft_toLeftOf="parent"
 android:layout_width="0dp"

你首先要设置layout_width=”0dp”,这个是必须的,然后你要让这个控件左边或者右边要约束到父布局里面。就像这条线一样,我想让它margin左边,我就只用设置这个属性就可以。app:layout_constraintLeft_toLeftOf="parent"
如果你不这样设置话,那么总是会报错。

上面的布局代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/dp_60"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_mine_friend_avatar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="@dimen/dp_10"
        android:src="@mipmap/img1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginStart="@dimen/dp_10"/>

    <TextView
        android:id="@+id/tv_mine_friend_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/dp_10"
        android:layout_marginTop="@dimen/content_small"
        tools:text="共享对象"
        android:textColor="#404040"
        android:textSize="@dimen/myedit_right_textsize"
        app:layout_constraintLeft_toRightOf="@+id/iv_mine_friend_avatar"
        app:layout_constraintTop_toTopOf="@+id/iv_mine_friend_avatar"
        android:layout_marginStart="@dimen/dp_10"/>

    <TextView
        android:id="@+id/tv_mine_friend_motto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/dp_10"
        tools:text="我有句mmp一定要讲"
        android:textColor="#404040"
        android:textSize="@dimen/myedit_right_textsize"
        app:layout_constraintBottom_toBottomOf="@+id/iv_mine_friend_avatar"
        app:layout_constraintLeft_toRightOf="@+id/iv_mine_friend_avatar"
        android:layout_marginStart="@dimen/dp_10"/>

    <TextView
        android:id="@+id/tv_mine_friend_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="@dimen/dp_10"
        tools:text="刚刚"
        android:textSize="@dimen/myedit_right_textsize"
        app:layout_constraintBottom_toBottomOf="@+id/tv_mine_friend_name"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/tv_mine_friend_name"
        android:layout_marginEnd="@dimen/dp_10"/>
    <View
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_width="0dp"
        android:layout_height="0.5dp"
        android:layout_marginLeft="@dimen/dp_10"
        android:background="#404040"/>
</android.support.constraint.ConstraintLayout>

其实ConstraintLayout真的是学起来挺容易的,并且用来也超级方便,就简单介绍到这里,其实里面还有很多高端的研究,感觉会这些就基本上已经够用了。

PCL 区域生长分割【2026最新版】 区域生长算法原理介绍、代码实现以及一个具体实验场景的应用案例进一步实现将分割结果的分类保存至本地文件夹。最近一次更新时间为:2026年5月4日。 阅读详情

相关推荐

ANSYS 2026 R1 Windows系统安装避坑指南:环境配置、模块部署与许可证实战

ANSYS作为主流CAE仿真平台,其安装部署已远超传统软件范畴,演变为涉及操作系统底层、GPU驱动兼容性、许可证微服务架构和统一缓存机制的系统工程。理解ANSYS安装原理,需从Windows 11 UEFI安全启动要求、DirectX 12 Ultimate图形栈依赖、gRPC架构的License Manager端口动态分配等核心机制切入;技术价值在于保障HFSS GPU加速、Fluent MPI并行稳定性及Workbench多模块协同可靠性;典型应用场景涵盖高校仿真实验室升级、工业设计院所平台重建及高性能

weixin_29251337的博客 1431

ConstraintLayout-使用

ConstraintLayout

e10010e的专栏 3175

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1132

ConstraintLayout布局 居中|居右 实现。

ConstraintLayout布局出来之后,一直没怎么使用过,今天写一个布局文件刚好使用了一下。 界面结构是这样的: 这里主要是左边的视图有两部分,一个ImageView控件和LinearLayout组成,LinearLayout控件中又有三个TextView,如果左边的根布局使用LinearLayout的话感觉会很繁琐,而ConstraintLayout控件的强大之处除了其拖拽的作

hacker_crazy的专栏 1万+

《供应链金融风控模型设计:多维度数据整合与动态风险预警机制》

注:方案突出供应链金融「三流合一」(资金流、物流、信息流)的风控逻辑,通过多维度数据整合与动态预警,解决传统风控中中小企业信用评估难、链条风险传导监测滞后的问题。◦ 构建供应链拓扑图,计算「核心企业违约对上下游企业的影响系数」(如某电子厂商违约时,其前五大供应商的风险权重自动提升40%)• 区块链应用:将核心企业应付账款上链存证,防止「一票多融」欺诈(如某供应商用同一应收账款在多家银行融资)◦ 财务数据:核心企业审计报告、上下游企业纳税数据(增值税发票频次/金额)

2501_91651383的博客 1550

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3172

约束布局ConstraintLayout加快布局速度

Android Studio2.2更新布局设计器,同时,引人了约束布局ConstraintLayout。简单来说,可以把它看做是相对布局的升级版本,但是区别与相对布局更加强调约束。何为约束,即控件之间的关系。它能让你的布局更加扁平化,一般来说一个界面一层就够了;同时借助于AS我们能极其简单的完成界面布局。ConstraintLayout简介ConstraintLayout的优点非常突出。Const

于连林 550

告别二极管发热!手把手教你用MOS管搭建同步整流电路(附死区时间设置避坑指南)

本文详细介绍了如何利用MOS管搭建同步整流电路(SR),以替代传统二极管,显著降低导通损耗和发热问题。内容涵盖自驱动方案的选择、关键元件参数计算、PCB布局要点及死区时间设置技巧,帮助工程师优化电源设计效率。

weixin_29540599的博客 453

Android 约束布局(ConstraintLayout)详解

前言 约束概述 转换布局 开始 创建布局 添加约束 基线约束 Chains Properties 设置宽高比例 Guidelines 自动添加约束 参考 本篇 ConstraintLayout 讲解版本:1.0.2,1.1.x 版本开始新增功能在下篇进行讲解。 前言 ConstraintLayout 是一个 ViewGroup,它的出现是为了解决复杂布局时,布局嵌套(

Airsaid 4万+

手把手教你学simulink(8.2)--simulink的实战案例:信号分析

通过以上步骤,你已经成功使用 Simulink 对信号进行了频谱分析和时域分析,提取了信号的有用信息。这个案例展示了如何创建 Simulink 模型、添加和连接模块、设置仿真参数、运行仿真以及分析结果。希望这个案例能帮助你更好地理解和使用 Simulink 进行信号分析。

MHD0815的博客 1125

4位无符号比较器设计

4位无符号比较器设计

好好学习,天天向上 7891

ConstraintLayout基础详解(中)

ConstraintLayout基础详解(中)

听海的博客 1993

银行业数据科学家的 6 条经验教训

原本希望在计算机科学、统计学和机器学习领域工作。运用新方法获得独特见解,实现一切自动化。简而言之,最终成了这个职业炒作的牺牲品。我想和你们分享一下。希望我们能够摆脱炒作,提高你对数据科学家工作的理解。

茶桁专栏 247

基础布局之ConstraintLayout约束布局

基础布局之ConstraintLayout约束布局

似霰的博客 7094

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android约束布局ConstraintLayout的使用

Android约束布局ConstraintLayout的基本使用 约束布局ConstraintLayout面世已有很长一段时间了,但我一直没有关注这个Android 中继五大布局后的新布局的使用。近日在网友的讨论的强烈推荐下,尝试了ConstraintLayout。使用之后的最大感触就是:为什么我不早点在项目中尝试ConstraintLayout!!! 本篇文章,旨在记录ConstraintLay...

qq_36046305的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ConstraintLayout 布局详解

ConstraintLayout 布局详解 简介 约束布局ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout。 优点 在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多,ConstraintLayout使用起

st526403649的博客 7812

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android 的 ConstraintLayout 布局使用

加依赖:确保里有。定根布局:根标签用。放视图:把ButtonTextView等放进去。添约束(最关键!:为每个视图的水平方向和垂直方向至少各加一个约束。水平方向:约束Start或End。垂直方向:约束Top或Bottom。常用目标parent(父布局)或其他视图的id。打开 Android Studio 的布局编辑器,直接拖拽控件,观察它自动生成的约束代码,这是最快的学习途径!场景推荐选择理由新项目开发性能好、功能强、现代标准复杂界面减少嵌套、响应式支持好简单相对定位代码更简洁直观。

m0_61945436的博客 1296

Android ConstraintLayout 约束布局的使用

目前Android的默认布局早已改成ConstraintLayout,但是很多小伙伴还是使用过去的相对布局,觉得老的布局用起来熟悉,新布局使用复杂,从而失去了探索新大陆的机会,今天就让我们一起揭开ConstraintLayout的面纱,掌握Android新布局的使用方法。传统的布局容易在版本迭代过程中,造成页面层级过多的问题(俄罗斯套娃),一是对页面渲染有影响,二是不利于开发者的后期维护。

weixin_42604414的博客 4083

Android详解——ConstraintLayout约束布局

ConstraintLayout继承自ViewGroup,允许用户以更加灵活的方式在布局中设置控件的位置和尺寸(ConstraintLayout在API>9可用)。ConstraintLayout采用方向约束的方式对控件进行定位,至少要保证水平和垂直方向都至少有一个约束才能确定控件的位置。相对位置边距中心位置圆形位置可见性尺寸约束链式布局虚拟辅助控件优化器记住,依赖关系中不能有循环依赖关系。

闲暇部落 5366

约束布局ConstraintLayout以及辅助布局详细介绍

真的很有必要学习约束布局和它的辅助布局,因为它可以做出很多好看的效果,且性能高;比如这个ConstraintHelper,效果如下图所示: 喜欢的可以继续往下看,不夸张的说,约束布局和其辅助布局的相关的这里都有,而且很详细; 引入androidx的constraintlayout的lib 相对定位 基本定位属性如下表,意思好比就是那一条边和那一条边对齐, 比如设置B控件的属性 layout_constraintLeft_toLeftOf=“@id/A” 就表示B控件的左边对齐A控件的左边,会收到这个约束。

热爱技术 5657

约束布局ConstraintLayout

国际惯例,官网参考文档是最好的学习资料: 使用 ConstraintLayout 构建自适应界面 1,背景 约束布局 ConstraintLayout 是最受欢迎的 Jetpack 库之一,其实是Android Studio 2.2中主要的新增功能之一,也是 Google 在2016年的 I/O 大会上重点宣传的一个功能。AS 已经将它作为新建页面默认布局了。经历这几年的迭代,功能已经非常的成熟,现在 2.0 正式版本也发布了,也许你已熟悉了旧版本中的功能,并开始用它来快速构建复杂的页面布局,而新版本除了包

GeofferySun的专栏 2972

Android约束布局ConstraintLayout

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可免费领取!

2301_79655576的博客 760

ConstraintLayout约束布局

ConstraintLayout约束布局 目录 前言 为什么用ConstraintLayout 如何使用ConstraintLayout 添加依赖 相对定位 角度定位 边距 居中和偏移 尺寸约束 链 辅助工具 Optimizer Barrier Group Placeholder Guideline 总结 前言 ConstraintLayout是Google在API9的时候推出的新...

shenglong0210的博客 33万+

Android ConstraintLayout布局

前言 ConstraintLayout约束布局, 与RelativeLayout有点类似。需要添加依赖 dependencies { ... ... implementation 'com.android.support.constraint:constraint-layout:1.1.3' } 1. 相对位置 主要属性如下, layout_constraintLeft_to...

假装你是大灰狼的专栏 3379

约束布局ConstraintLayout看这一篇就够了

原文:https://juejin.im/post/5bac92f2f265da0aba70c1bf 1.介绍 约束布局ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout...

h610968110的博客 4133

Android ConstraintLayout 约束布局详解

早在2016年的Google I/O大会上 ,提出的一个可以灵活控制子控件的位置和大小的新布局。并且其号称可以实现布局最大程度的扁平化。Google 发布了Android Studio 2.2预览版,同时也发布了Android 新的布局方案 ConstraintLayout , 但是最近的一年也没有大规模的使用。2017年Google发布了 Android Studio 2.3 正式版,在 And...

冷冷清清里风风火火是我 1万+
上一篇: 打造一个通用的TitleView
下一篇: 高仿QQ时间选择器
Code_legend
博客等级 码龄10年 33粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值