小工具知识网

当前位置: 首页 > 行业知识 > Android 约束布局(ConstraintLayout)详解,android基础编程

行业知识

Android 约束布局(ConstraintLayout)详解,android基础编程

2026-10-25 23:54:34 来源:互联网转载

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)]

上一篇:探索CoreDNS,新一代DNS解析核心的力量

下一篇:Win10系统更新全攻略,轻松掌握最新更新方法与技巧!