摘要:使用检查依赖项,是否添加此依赖库。起,官方的模板默认使用。效果如图所示设置宽高比例当或者设置为时,还可以通过设置宽高比例。该比例默认表示的值。使用设置宽度和高度的比值来灵活设置的尺寸。这个属性有点像中的属性平分布局。
前言
Hi,大家好,看到标题后大家是不是一脸懵逼,这是啥?这小编搞事情?说好的六大布局咋又来个布局杀手?这就是咱们公众号和其他公众号的不同,我们并不是照本宣科的讲解Android知识,而是将项目当中实际运用到的并且是好用的东西分享给大家,还等什么呢?赶紧开始我们的学习吧!!
引入简介:约束布局(ConstraintLayout) 是一个ViewGroup,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整View。
说明:本博文是以ConstraintLayout1.1.3为基础编写,不同的依赖版本有不同的属性和方法,如果依照博文编写demo发现编译出错,请自行研究更新版本的约束布局或者与博主版本保持一致。
使用:检查依赖项,是否添加此依赖库。
//Android Studio2.3起,官方的模板默认使用ConstraintLayout。更新gradle插件版本之后,创建项目已经自动依赖,如果是老项目想要使用约束布局依赖如此 dependencies { implementation "com.android.support.constraint:constraint-layout:1.1.3" }使用
在Android Studio2.3之后,创建一个layout文件,默认使用布局如下:
从上面发现有四个属性:
layout_constraintBottom_toBottomOf="parent" //View下边对齐parent底部 layout_constraintLeft_toLeftOf="parent" //View左边对齐parent左边 layout_constraintRight_toRightOf="parent" //View右边对齐parent右边 layout_constraintTop_toTopOf="parent" //View上边对齐parent上边
除此之外还有几个其他的常用属性,表示View之间的关系
layout_constraintBottom_toTopOf="parent" //View下边对齐parent上边 layout_constraintLeft_toRightOf="parent" //View左边对齐parent右边 layout_constraintRight_toLeftOf="parent" //View右边对齐parent左边 layout_constraintTop_toBottomOf="parent" //View上边对齐parent下边
注意:此处parent可以换成其他想要与之关联的View的控件ID
模板中声明了一个TextView,且处于屏幕中间。如何做到的呢?上面四个属性顾名思义都指定了TextView与Parent(父布局)的关系,约束布局如果不指定水平和竖直方向的百分比,默认是50%,所以会居中。如果想要指定百分比使用如下属性:(使用横向比例需要指定左右关系,使用竖直比例需要指定上下关系)
layout_constraintHorizontal_bias="0.4" layout_constraintVertical_bias="0.5" 这里有人会问,按照设计图的比例如何确定这个比例呢:这里有一个公式和描述是经过验证的 1.bias值=子View左相关的长度/(子View左相关的长度+其右相关的长度) 2.bias值与左相关的长度是成正比的,增大bias值,子View的左相关总是随之增长。至于控件具体往左往右移动,则视子View与关联控件的哪边相关。
无图无真相,计算说明这么复杂,想要搞晕我?直接上图!
所以我们知道:想要使用约束布局固定一个View的位置,需要通过其与目标View相对的距离、位置,且从上(top)左(left)下(bottom)右(right)至少三个方位来说明关系
设置百分比布局当 ConstraintLayout 子布局的宽或高设置为0dp时,可以对宽或高设置百分比
使用layout_constraintHeight_percent和layout_constraintWidth_percent属性设置横竖方向占比来确定宽度和高度,而不用具体尺寸,可以使用此属性做一般View的屏幕适配。效果如图所示:
设置宽高比例当 layout_width或者 layout_height设置为0dp时,还可以通过 layout_constraintDimensionRatio设置宽高比例。该比例默认表示 width:height的值。
使用layout_constraintDimensionRatio设置宽度和高度的比值来灵活设置View的尺寸。如果想要表示高度:宽度则可以配置属性类似h,16:9的含义是 h:w=16:9 也可设置 w,9:16是一样的。效果如图所示:
强制约束当一个view的宽或高,设置成wrap_content时
实现效果如图所示:
纳尼,怎么回事,不是应该右边不会超出父布局的么,我已经设置了layout_constraintRight_toRightOf="parent",这个就是设置了适应内容属性后出现的问题,此时需要强制使用约束宽度的属性 ,你会发现效果正常了。
app:layout_constrainedWidth="true"//在btn2上添加此属性控件链条(Chain)
可以通过 layout_constraintHorizontal_chainStyle或 layout_constraintVertical_chainStyle设置链式控件的样式。这个属性有点像 LinearLayout中的 weight 属性平分布局。使用此属性,通常是权重分配不满足需求,但是又需要居中或者分配View的空间
先放一个官方解释的示例图
看完这个图是不是还觉得一头雾水,看起来很复杂的样子?其实不然,在开发中灵活使用此属性则能事半功倍且适配效果很好。使用此属性之前,需要把你即将连成链条的View彼此之间建立关联关系,水平方向则是控件彼此左右关联,竖直方向则是上下关联,每相邻两个View之间必须紧紧关联ID。即是:将一个方向上的控件形成锁链(相互依赖),默认属性是spread
Spread Chain Spread Inside Chain//在btn1上配置 app:layout_constraintHorizontal_chainStyle="spread_inside" //左右靠边,中间剩余Packed Chain
//在btn1上配置 app:layout_constraintHorizontal_chainStyle="packed" //三个控件彼此紧靠且整体居中Packed Chain with Basis
//在btn1上配置 app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="0.9" //三个控件彼此紧靠且整体在横方向设置比例处结语
由于文章篇幅有限,且实际项目中还没有研究到更多更好用的新属性,暂时就告一段落,后期还会有关约束布局的更多好的玩法推送给大家,如果有小伙伴发现更高效或者更实用的属性,欢迎你们的留言,让我们共同成长吧~
PS:如果还有未看懂的小伙伴,欢迎加入我们的QQ技术交流群:892271582,里面有各种大神回答小伙伴们遇到的问题哦~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76185.html
摘要:大杀器之性能剖析原文地址大杀器之性能剖析前言写了几吨代码,实现了几百个接口。功能测试也通过了,终于成功的部署上线了结果,性能不佳,什么鬼 Golang 大杀器之性能剖析 PProf 原文地址:Golang 大杀器之性能剖析 PProf 前言 写了几吨代码,实现了几百个接口。功能测试也通过了,终于成功的部署上线了 结果,性能不佳,什么鬼?
摘要:大家好,我是一行之前一行分享过好用的几种编辑器,测试有没有下载成功,用来做数据分析,开发的大杀器,等等,小众猿群使用那在用这个开发大杀器的同时,一行也来分享几个它很好用的插件,来给你的搬砖提提速可以作为摸鱼好助手次下载 ...
过去我们让AI说话,它给出的总是不咸不淡的机器合成声音,毫无波澜的死板音调让人听得昏昏欲睡。但由于chatTTS的到来,一切都将会变得不一样。作为一款强大的对话式文本转语音模型,它完美解决了用户对于生动对话的需求。如此功能不可小觑,可以称得上在业界一骑绝尘。对于短视频内容创作,有声小说配音,数字营销推广以及日常办公,它都可以成为强有力的助手。此外,该项目还衍生出音色抽卡,长文本推理,角色扮演等功能...
阅读 3101·2021-09-09 11:39
阅读 1213·2021-09-09 09:33
阅读 1085·2019-08-30 15:43
阅读 518·2019-08-29 14:08
阅读 1715·2019-08-26 13:49
阅读 2359·2019-08-26 10:09
阅读 1529·2019-08-23 17:13
阅读 2267·2019-08-23 12:57