Android开发之路UI篇:ConstraintLayout

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

个人公众号:

定期更新。一起交流学习吧

1、简介:

ConstraintLayout是由AndroidStudio2.2推出一套新的布局。它是为了解决布局嵌套的问题,并且

增加可视化编辑的xml文件。

2、基本使用:

 1:相对定位:

layout_constraintLeft_toLeftOf    将控件 A左边的约束 置于控件 B的左边的方向上。AB左对齐

layout_constraintLeft_toRightOf  将控件 A左边的约束 置于控件 B的右边的方向上。A的左边与B的右边对齐

layout_constraintRight_toLeftOf

layout_constraintRight_toRightOf

layout_constraintTop_toTopOf

layout_constraintTop_toBottomOf

layout_constraintBottom_toTopOf

layout_constraintBottom_toBottomOf

layout_constraintBaseline_toBaselineOf   中心线对齐

layout_constraintStart_toEndOf

layout_constraintStart_toStartOf

layout_constraintEnd_toStartOf

layout_constraintEnd_toEndOf

 

注意:ConstraintLayout 必须指定左右约束和上下约束。

 

 

2:角度定位

app:layout_constraintCircle="@+id/TextView1"

app:layout_constraintCircleAngle="120"(角度)

app:layout_constraintCircleRadius="150dp"(距离)

指的是TextView2的中心在TextView1的中心的120度,半径为150dp,效果如下:

 

 

注意:角度定位不是很常用,了解

 

3: 常用margin

ConstraintLayout的边距常用属性如下:

android:layout_marginStart

android:layout_marginEnd

android:layout_marginLeft

android:layout_marginTop

android:layout_marginRight

android:layout_marginBottom

 

goneMargin主要用于约束的控件可见性被设置为gone的时候使用的margin值,属性如下:

layout_goneMarginStart 

layout_goneMarginEnd

layout_goneMarginLeft

layout_goneMarginTop

layout_goneMarginRight

layout_goneMarginBottom

即使控件设置为gone,margin值仍然存在。

 

4、尺寸约束:

constraintlayout常见的问题:

使用wrap_content,让控件自己计算大小,当控件的高度或宽度为wrap_content时,

可以使用下列属性来控制最大、最小的高度或宽度,以宽度为例:

android:minWidth 最小的宽度

android:minHeight 最小的高度

android:maxWidth 最大的宽度

android:maxHeight 最大的高度

app:layout_constrainedWidth="true”属性。是为了防止左右条件约束的失效,例如:

textview的内容不断增多,导致内容挤出屏幕显示不出,就会导致左右约束的失效。

 

5、百分比布局:

当宽或高至少有一个尺寸被设置为0dp时,可以通过属性layout_constraintDimensionRatio设置宽高比,除此之外,在设置宽高比的值的时候,还可以在前面加W或H,分别指定宽度或高度限制。 例如:

app:layout_constraintDimensionRatio="H,2:3"指的是 高:宽=2:3

app:layout_constraintDimensionRatio="W,2:3"指的是 宽:高=2:3

 

ConstraintLayout还提供了另外一种偏移的属性:

layout_constraintHorizontal_bias 水平偏移

layout_constraintVertical_bias 垂直偏移

范围为 0-1 的值:假如赋值为0,在布局的最右侧,假如假如赋值为0.5,则水平居中,假如假如赋值为0.3,则更倾向于左侧。垂直偏移同理。

app:layout_constraintHorizontal_weight=“1"

控件在水平方向上的权重设置。

注意:水平权重,宽度约束设置为0dp,竖直权重,高度约束设置为0dp。

 

6、Guideline

Guideline 与 LinearLayout 类似可以设置水平或垂直方向,android:orientation="horizontal",android:orientation="vertical",水平方向高度为0,垂直方向宽度为0。Guideline 具有以下的三种定位方式:

  • layout_constraintGuide_begin 距离父容器起始位置的距离(左侧或顶部)

  • layout_constraintGuide_end 距离父容器结束位置的距离(右侧或底部)

  • layout_constraintGuide_percent 距离父容器宽度或高度的百分比

 

7、Barrier

barrierDirection 指定方向,constraint_referenced_ids引用的控件 id(多个id以逗号隔开)。

app:constraint_referenced_ids="TextView1,TextView2" />

注意:使用时要进行互相约束(指的是Barrier左右或者上下两边的控件都要对barrier进行约束才有效)。

8、Group

可以把多个控件归为一组,方便隐藏或显示一组控件

app:constraint_referenced_ids="TextView3,TextView4" />

9、Chains

条件:一组控件它们通过一个双向的约束关系链接起来。一条链的第一个控件是这条链的链头,我们可以在链头中设置 layout_constraintHorizontal_chainStyle来改变整条链的样式。

 注意:链的属性是由一条链的头结点控制的

注意:如果布局的没有剩余空间已经被填充满设置Chains是无效的。

Android移动应用开发基础知识整理 Android移动应用开发 9.13笔记 自带模拟器运行程序出现adb问题:需要配置环境变量。 adb简介:安卓调试桥,模拟器与开发环境的连接,也需要配置环境变量。 1)运行程序时显示和功能逻辑分离(.xml文件/布局文件,.java文件):易于找到bug,增强了程序的可维护性。 2)书写代码时注意格式规范性,类名首字母大写。驼峰命名法。 android下的文件夹目录功能 1、resource资源:存放图片,和图片相关的文件。 2、layout资源:存放布局文件 3、mipmap:存放图标 4、values 阅读详情

相关推荐

从ConstraintLayout到Jetpack Compose:全面掌握Android UI设计与布局技术

本文系统解析ConstraintLayout与Jetpack Compose的核心技术,涵盖ConstraintLayout的高效约束布局、动态优化及Material Design 3适配,对比Jetpack Compose的声明式UI开发优势。通过实战案例展示如何从传统XML布局迁移至现代开发范式,提升性能与开发效率,适配复杂交互需求,助力开发者全面掌握Android UI设计全流程。

全栈 1221

Android开发之ConstraintLayout

布局中的神,约束布局

ShadyPi的IT笔记 1673

【安卓开发】UI设计基础5:用约束布局 ConstraintLayout实现计算器UI

约束布局1、约束布局是通过给视图添加约束来确定视图位置和大小的。 如果一个视图没有添加任何约束,无论编辑时它出现在什么位置,运行后它都将位于界面的左上角(从坐标零点开始绘制) 。 2、可以给一个视图上下左右四个方向的添加约束, 对约束布局的操作基本都可以通过鼠标拖动来完成。 3、视图之间也可以添加约束以便确定相对之间的位置。链式群组约束1、因为实现计算器我主要用的是链式群组约束,这里主要介绍一

flora 2223

学习笔记:ConstraintLayout

现在创建默认布局都是ConstraintLayout了,所以作为一个安卓开发者不会的话也说不过去,今天就来学习和总结一下吧。 ConstraintLayout有一点点像RelativeLayout,因为它们都需要为控件添加相对于父控件的位置属性。 话不多说开始吧。 首先拖入三个 TextView 控件 将控件拖入后如果没有设置位置依赖(相对于父控件的位置的属性)就会出现感叹号。 最快捷的方法就...

左飞飞的博客 828

Android UI开发入门:从基础布局到交互实现

UI开发是移动应用构建的核心环节,通过XML布局和代码逻辑的配合实现用户界面。Android系统提供多种布局方式如LinearLayout、RelativeLayout和性能更优的ConstraintLayout,配合TextView、Button等基础组件快速搭建界面。在工程实践中,ViewBinding技术能显著减少模板代码,而样式资源和屏幕适配方案则保障了多设备一致性。对于初学者,掌握UI与Activity的交互原理(如点击事件处理)是开发功能性应用的基础。随着Jetpack Compose等现代工具

weixin_34176694的博客 324

Android 布局系列(四):ConstraintLayout 使用指南

ConstraintLayout 是 Android 官方推出的一种布局方式,旨在简化和优化复杂界面的布局设计。它首次出现在 Android 2016 年的 I/O 大会上,并迅速成为了开发者的首选布局工具。ConstraintLayout 的最大特点是它不需要过多的嵌套布局,通过约束关系(constraints)直接控制视图的位置和大小,从而避免了传统布局中可能出现的性能瓶颈。

weixin_39339407的博客 2501

ConstraintLayout

ConstraintLayout

Android_yh的博客 620

火山安卓APP开发UI框架完整实战项目

火山安卓UI框架是由字节跳动推出的一套高性能、高扩展性的Android原生界面开发解决方案。其核心优势在于高效的组件化架构、跨平台兼容性、强大的定制能力,适用于大规模应用的界面构建需求。火山框架基于现代UI设计理念,融合了声明式编程与响应式更新机制,显著提升了开发效率和运行性能。相较于传统Android原生开发,火山框架通过组件解耦、布局优化、动画封装、主题系统统一管理等手段,实现了更高效的UI构建与维护。

weixin_32312889的博客 979

ConstraintLayout Barrier Group Guideline Placeholder

ConstraintLayout基本用法 为了不陷入 -这都不会,我都教了800遍了的困境,若是觉得我写的理解有歧义、困难,欢迎留言 非常高兴你能看见我的文章,本文是官方文档根据自己的理解而编写,请阅读我的文章,再次阅读官方文档,传送门https://developer.android.google.cn/reference/android/support/constraint/Constra...

androidgcg的博客 590

企业微信-审批控件中的外部选项的应用全流程完美解决方案

完美解决企业微信所有JS-SDK调用问题 完美解决苹果和PC端不适配的问题

qq_45195039的博客 5872

阿里开源最强数字人工具 EchoMimicV2,本地部署(一)

EchoMimicV2是阿里推出的半身人体AI数字人项目,基于参考图片、音频剪辑和手部姿势序列生成高质量动画视频,确保音频内容与半身动作的一致性。现在本地部署,安装体验一下。

缘分天空的专栏 4614

约束布局ConstraintLayout

约束布局ConstraintLayout_小山研磨代码的博客-优快云博客_约束布局constraintlayout

code_dream_wq的博客 145

从零搭建医疗化验单识别系统:深度学习+OCR实战教程(附数据集)

本文详细介绍了如何从零开始构建一个医疗化验单智能识别系统。通过融合深度学习和OCR技术,系统能够应对版式多样、内容专业的医疗单据,实现从文本检测、识别到关键信息结构化抽取的全流程。文章提供了数据集处理、模型选型、训练微调及工程化部署的实战指南,并分享了避坑经验与性能优化策略,为开发者解决医疗信息化痛点提供了完整的技术方案。

k9l0m1的博客 493

android约束布局的局限性,android – 约束布局,百分比无法按预期工作

两个小但重要的变化:> TextView宽度应为0dp,即匹配约束而不匹配父级>指导方向应垂直而非水平这是代码:xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent">android:id="...

weixin_33680199的博客 251

实战指南:UOS专业版命令行高效下载离线安装包及依赖

本文提供了一份UOS专业版离线安装包的实战下载指南。针对无外网环境下的软件部署难题,详细介绍了如何通过命令行精准获取软件包名,并利用`apt download`命令高效下载主程序及其所有依赖。文章重点解析了使用`apt install --dry-run`模拟安装来完整获取依赖包的方法,并给出了离线安装、问题排查及自动化脚本编写等高级技巧,帮助管理员和运维人员实现可靠的批量离线部署。

honey的博客 1110

全球气候模式降尺度方法总结及其代码实现

简介总结各类型气候模式降尺度方法

WW、forever的博客 1万+

重温安卓小控件练习(一)

安卓控件的简单练习

镇元子的博客 361

华为od 面试八股文_测试/测试开发_01_含答案

华为od面试八股文_测试/测试开发_01_含答案

MISAYAONE的博客 3816

Android通过代码添加和调整布局控件

在实际开发中,有时候布局控件的添加和修改是需要动态调整的,参数的设置和方法的调用显得非常重要,可能xml布局文件中一个小功能,通过代码需要绕一圈来实现,如:margin 边距。动态添加布局。动态添加控件,重点在于控件的定位需要根据id值来控制其他的控件的参数设置根据需要来设定即可,基本上同xml布局控件时差不多。有时我们需要通过代码来调整控件的大小,需要借助其 LayoutParams 来实现动态调整其 width 和 height 的值。动态变更控件的位置,同样需要借助其 LayoutParams 来实现

曲幽 4399

YOLO26改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头

本文记录的是基于移动倒置瓶颈 MBConv 的 YOLO26 的检测头轻量化改进方法研究。采用了独特的倒置瓶颈结构,通过的操作以及,在高效提取特征的同时极大地降低了计算量。本文将的设计优势融入j检测头中,使其在目标检测任务中不仅能够更精准地识别各类目标,还能在计算资源有限的情况下快速响应,展现出更为卓越的实时检测能力。EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks的实现代码如下: 首先在代码中加入如下代码: 其

Limiiiing的博客 287

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

学习安卓-第三周-拍照裁剪与perssionx的使用

拍照裁剪问题 (1)首先是模板imgpath,uri,File这几种格式的转换。 (2)调用系统相机拍照的startActivity问题。 由于之前我们都是在activity中开始startActivity,所以在当前activity 里进行onstartActivity是没有问题的,但是在frgment里调用,就存在不同(拿不到返回数据)。 activity,frgmentActivity,fgment都可以进行startActivity,和onactivity的接收,只是,fragmentActiv..

qq_46577594的博客 275

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

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

安卓Android 架构模式及UI布局设计

界面设计与程序逻辑分离:有利于并行安卓中的架构模式 **优势:** 1. 设计可扩展的应用程序,方便进行未来的更改和更新。 2. 实现模块化设计,提高代码质量,便于测试和维护。开发,后期修改界面时不需修改程序逻辑代码。设计模式MVC、MVP、MVVM

m0_74154295的博客 3918

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android约束布局ConstraintLayout的使用

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

qq_36046305的博客 2万+

Android 开发 - 控件(ConstraintLayout、Guideline、SeekBar、Chronometer、RecyclerView、Toolbar)

Android 开发 - 控件(ConstraintLayout、Guideline、SeekBar、Chronometer、RecyclerView、Toolbar)

weixin_52173250的博客 1285

从ConstraintLayout到MotionLayout:Android布局开发的演进之路

在Android应用开发中,布局系统是构建用户界面的核心。从早期的LinearLayout到RelativeLayout,再到如今的ConstraintLayout和MotionLayout,Android布局技术经历了显著的演进。本文将深入探讨ConstraintLayout如何彻底改变了Android布局开发,并展示MotionLayout如何进一步将静态界面提升为流畅的动画体验。 ## C

gitblog_00014的博客 659
上一篇: Android开发之路工具篇:版本控制工具(Git)
下一篇: Android 开发之路之加解密
FlyRabbit_1
博客等级 码龄10年 4粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值