行业知识
Android 约束布局(ConstraintLayout)详解,android基础编程
app:layout_constraintRight_toLeftOf=“@+id/button2”
tools:layout_editor_absoluteY=“69dp”/>
我们刚刚创建好了一条链,此时我们可以设置 Cycle Chain Mode(链式模式)来告诉 Chains:“你应该怎样去填充剩余的空间”。
在「蓝图」中,设置的方式是点击链条的小图标:
在「布局」中,设置的属性是:
layout_constraintHorizontal_chainStyle
layout_constraintVertical_chainStyle
分别对应着「水平链」和「垂直链」。
有三种可选的参数:
- spread:将可用空间以均匀分布的方式将视图放置在链中(默认模式):
- spread_inside:将链中最外面的视图对齐到外边缘,然后在可用空间内均匀的放置链中的其他视图:
- packed:将链中的视图紧紧的放在一起(可以提供边距让其分开),然后让其居中在可用空间内:
除了上面说的之外,Chains 还能对链中单独的视图控件设置 Weiget。因为目前并不支持在编辑器当中设置 Weiget,所以我们只能在布局中进行设置了,设置的属性是:
layout_constraintHorizontal_weight
layout_constraintVertical_weight
我们现在将第一个 Button 填充完剩余的空间,在该 Buttton 上设置如下属性:
android:layout_width=“0dp”
app:layout_constraintHorizontal_weight=“1”
使用和 LinearLayout 的 Weiget 一致,很好理解。
Properties
基本的添加、删除约束我们已经掌握了,那么现在再来将目光转向右侧的 Properties 区域。
该区域分为了上下两个部分,下部分就是选中控件的一些属性什么的,很好理解。
重点来看看上半部分,该部分被称为:Inspector 区域。
首先来看这些数字,很明显就是当前控件的 margin 值,我们可以直接在上面进行修改:
还有就是左边和下边的两个轴,我把它称之为纵横轴。作用是用于确定控件位置的:
根据上图可以看到,因为该控件同时添加了水平和垂直约束,所以两条轴都可以进行操作。 轴上面的数字是比例,对应的属性如下:
app:layout_constraintVertical_bias=“0.5”
app:layout_constraintHorizontal_bias=“0.5”
再来看看中心区域:
四条边的原点就是添加的约束,点击的作用是删除该约束。
重要的是中心的 >>>,这个代表了当前控件的宽高计算方式。点击是可以切换的,一共有三种:
- :这个代表的就是 wrap_content,不用过多解释了。
- :这个就是指定宽高的大小。
- :这个代表的是:Match Constraints(有点类似于 match_parent),就给强翻成约束匹配吧… 这个是 ConstraintLayout 特有的,它会尽可能扩展以满足各方的约束(在考虑视图边界之后)。但是,可以使用以下属性和值修改该行为(只有在将视图宽度设置为与约束匹配时,这些属性才会生效):
- layout_constraintWidth_default:
- spread:这是默认的行为,它会尽可能的扩展视图来满足约束。
- wrap:与上面所说的 wrap_content 不同的是,虽然都是适应内容,但仍然允许视图比约束要求的视图更小。
- layout_constraintWidth_min:指定视图的最小宽度(dp)。
- layout_constraintWidth_max:指定视图的最大宽度(dp)。
下面来几个例子,演示下约束匹配的效果,比如说,要让一个 Button 宽度填充满,仅需要将宽度设置为 0dp 即可:
android:layout_width=“0dp”
如果是两个 Button:
效果:
设置宽高比例
当宽高至少有一项设置为 0dp 时(也就是 Match Constraints),那么我们就可以为该视图设置宽高比例。设置的属性是:
layout_constraintDimensionRatio
如:
参数是一个浮点值:“宽度:高度”,在该例子中,表示的宽高比是 3:1,也就是高度是宽度的三分之一。
当我们的宽高都设置为 0dp 时,如:
此时,该视图是不会显示的,虽然我们加了 left 和 rigth 约束到父控件,让它知道了它的宽度就是父控件的高度,但是此时它还并不知道自己有多高。
所以此时我们在添加 ration 时,则可以指示哪一方应该受到约束,方法是在比率前面添加字母 W(用于限制宽度)或 H(用于限制高度),用逗号分隔:
app:layout_constraintDimensionRatio=“h, 3:1”
这里设置的宽高比例是 3:1,那么高度就只有宽度的三分之一了:
Guidelines
Guidelines 是一条对实际显示界面不可见的线。用处是帮助我们的控件增加约束。
我们可以通过该图标来添加垂直或者水平的 Guidelines:
比如我们想让控件在中心显示:
可以看到 Guidelines 可以切换百分比,或者是实际的距离。具体用哪种还是得根据实际情况来。
自动添加约束
有两种方式实现自动添加约束,分别是:
- Autoconnect:这是一个独立的功能,默认是关闭的。我们可以开启它,开启后,它将自动为新添加的视图创建两个或者更多的约束。其他的视图则不会自动添加,如:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
总结
Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。详情可以点击我的【Github】
如果你熟练掌握【Github】中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
[外链图片转存中…(img-ZpqVW4j3-1711299374618)]
[外链图片转存中…(img-TzUTRS9o-1711299374618)]
[外链图片转存中…(img-evibyspa-1711299374618)]
- Autoconnect:这是一个独立的功能,默认是关闭的。我们可以开启它,开启后,它将自动为新添加的视图创建两个或者更多的约束。其他的视图则不会自动添加,如:
- packed:将链中的视图紧紧的放在一起(可以提供边距让其分开),然后让其居中在可用空间内:
- spread_inside:将链中最外面的视图对齐到外边缘,然后在可用空间内均匀的放置链中的其他视图: