当前位置: 首页 > news >正文

约束布局详解

布局优化是我们在开发中常常遇到的问题。我们知道布局越复杂嵌套层次越深则加载它的开销越大,性能越差。约束布局是我们在进行布局优化时经常会考虑使用的方式。

约束布局不仅提供了一些如百分比布局、角度定位、辅助线等一些好用的工具,帮助我们可以轻松实现一些效果。最主要的是,它使得布局扁平化,减少了布局的层次,从而提升了加载布局的效率。

1、建立约束

约束布局主要跟其他控件建立约束,以确定自身的位置。看一个简单的例子,文本框跟父布局建立约束,达到在父布局居中的效果。

它有四个方向,分别是start、end、top和bottom。下面的例子,预览图上四个像弹簧一样的东西就是表示约束的建立。相对的方向上约束力默认是一样的,因而文本框可以刚好处在父布局中间的位置。可以想象成两根弹簧的拉力。当然这个力可以设置为不同大小,布局位置就会发生改变,这个后面再讲。

除了和父布局建立约束,任意布局间都可以建立约束关系。

建立一个TextView让他依赖到前一个TextView的左边。

如app:layout_constraintStart_toEndOf="@id/textView1",属性表示建立约束关系。一个约束属性有两个方向。

最后一个下划线左边的方向(Start)表示需要建立约束的控件的自身的方向。下划线右侧(End)表示约束目标控件(textView1)的方向。

Start和End 实际上分别表示左和右。但是为了兼容自右向左的语言因而用Start和End。在自右向左的语言,则Start表示右,End表示左。约束布局这样定义,我们就不需要考虑语言的方向问题。

前面说过当两边约束力相同,则控件出现居中的效果。使用这种特性可以很容易实现一个控件相对另一个控件水平居中。

如下图,让TextView2的上下分别依赖到TextView1的上下,则可以轻松实现TextView2相对TextView1水平居中的效果。

2、约束属性

充满约束

约束布局中如果需要一个控件的尺寸依赖于它所约束的空间。比如上面TextView2的宽度想要跟随TextView1的高度。则可以指定TextView2的高度为“充满约束”--设置高度属性值为0dp

TextView2的高度将和TextView1保持一致。如果此时TextView2的上下分别依赖到父布局,则相当于充满父布局,等同于match_parent属性。

布局权重

约束布局没有专门的权重属性,它是使用layout_constraintHorizontal_weight进行权重方式布局,当然这是水平方向权重,它还有垂直方向权重属性。使用权重布局也需要设置对应方向上的尺寸为0dp。这点和线性布局是一样的。

通过设置TextView1和TextView2的宽度为0dp,水平方向权重分别为2和1。这两个布局将按照2:1在宽度上完全充满父布局。

http://www.jsqmd.com/news/1124419/

相关文章:

  • 基于YOLOv8的暴力行为检测系统开发实战
  • 2025国内合规大模型实测指南:文心一言、通义千问等备案AI选型建议
  • SVM用户态API设计与工程实践指南
  • 企业本体语义平台-企业大脑的范式跃迁
  • Wireshark自定义协议解析:从proto_item基础到高级实战
  • EditAnything与ComfyUI集成教程:打造专业视频编辑工作流
  • 如何用Python桌面宠物框架DyberPet快速创建你的专属虚拟伙伴:完整教程
  • 2026年15款AI应用实战指南:从自动化到内容创作,重塑工作流
  • 你的华硕笔记本性能被封印了吗?G-Helper一键解锁硬件潜力
  • Chrome DevTools MCP:让AI助手成为你的浏览器调试专家
  • 基于YOLOV8的花卉智能检测系统开发实战
  • 开发者实战验证的16个生产级AI编程Agent选型指南
  • vue 使用 vue-wechat-title 动态设置title
  • 2026年AI论文软件核心能力速览
  • Spectre多因子模型实战:构建Barra风格的风险因子分析系统
  • 3分钟掌握Hidden Word:为你的原创内容穿上隐形防护衣
  • 从ECDHE原理到Wireshark实战:深度解析TLS握手与HTTPS安全通信
  • 突破性存储优化:Apache Doris三大压缩算法如何实现40%成本革命
  • 如何3分钟搞定音乐歌词管理?163MusicLyrics终极指南助你轻松整理歌曲
  • 开源AI测试平台TestHub部署与UI自动化实战指南
  • 炉石传说终极模改指南:如何用HsMod打造300%高效游戏体验
  • 如何免费创建专业图表:Mermaid Live Editor 终极指南
  • 三步玩转Sulphur-2:开启无审查AI视频创作新纪元
  • AI工具如何提升学术效率:从文献阅读到数据处理
  • 非完整约束下机器人重排规划:ReloPush-BOSS框架解析
  • 规划我的CV投稿路线图:从顶会到潜力期刊的实战指南
  • Video2X终极指南:免费AI视频放大神器,让模糊视频瞬间变高清
  • 数据库设计 Step by Step (5)——理解用户需求
  • Python大模型开发:多模态模型图像生成API封装与参数调优实战
  • Krea-2 Turbo模型深度实践指南:如何在有限硬件资源下实现专业级AI绘图