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

一起Talk Android吧(第五百零九回:约束布局中的组功能一)

文章目录

  • 功能介绍
  • 使用方法
    • Group
    • Layer
  • 对比总结

各位看官们大家好,上一回中咱们说的例子是"多层布局功能",这一回中咱们说的例子是"约束布局中的组功能"。闲话休提,言归正转, 让我们一起Talk Android吧!

功能介绍

我们在这里说的组功能表示把多个组件组合在一起形成一个组,然后通过组来统一管理组内的控件。而且我们讨论的组功能只限于约束布局内,其它布局暂时不讨论。

使用方法

Group

约束布局提供了Group表示一个组,使用时可以在布局管理器中选择多个组件,然后点击右键->Helper->Group,会自动把所有的组件放到一个组中。该操作会生成以
以下代码:

 <androidx.constraintlayout.widget.Groupandroid:id="@+id/group"android:visibility="invisible"app:constraint_referenced_ids="circle_out_1,circle_out_3,circle_out_5"android:layout_width="wrap_content"android:layout_height="wrap_content">
</androidx.constraintlayout.widget.Group>

代码中的constraint_referenced_ids属性中有多个id值,这些id就是我们在布局管理器中选择的组件。

如果大家不喜欢使用布局管理器,也可以直接在xml中输入上面的代码,然后手动把其它组件的id赋值给constraint_referenced_ids属性。

这两种方法实现的效果相同,只是一种是通过布局管理器自动创建Group,另外一种是通过代码手动创建Group.注意:不管使用哪种方法,都需要修改组的id,方便以后使用。

组创建好以后,可以在Group中通过visibility属性来控制组的显示和隐藏功能,比如:示例代码中给该属性赋值为invisible后,组的控件全部被隐藏了。

目前只发现Group有显示和隐藏组件的功能,Group的长度,对齐等属性都没有效果,背景色属性也没有效果,ObjectAnimator动画更是没有效果.

Layer

除了上面介绍的组外,约束布局还提供了Layer表示一个组,它和Group的用法完全相同,可以通过布局管理器添加,也可以直接通过代码实现,下面是示例代码:

<androidx.constraintlayout.widget.Layerandroid:id="@+id/group"app:constraint_referenced_ids="circle_out_1,circle_out_3,circle_out_5"android:layout_width="wrap_content"android:layout_height="wrap_content">
</androidx.constraintlayout.widget.Layer>

Group通过组件的ID来包含组件,Layer也是,它们使用相同的属性:constraint_referenced_ids.

我在约束布局推出之前经常使用线性布局中来包含多个组件构成一个组,然后通过组统一管理多个组件,比如统一设置背景色;现在使用Layer可以实现此功能,它还可以添加监听器来响应事件,也可以设置动画.这些功能是Group所不具备的.

对比总结

我们介绍了两种组:GroupLayer. 其中Group只能单纯地用来显示或者隐藏组内的控件;而Layer可以设置背景色,绑定ObjectAnimaor动画。这些功能是非常适用的功能。相比之下,Layer的功能比Group的功能更加强大。我更加推荐大家使用Layer.

注意:不论是Group还是Layer都只能在约束布局中使用。

看官们,关于"约束布局中的组功能"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

http://www.lryc.cn/news/22473.html

相关文章:

  • 2023安徽省“中银杯”职业技能大赛“网络安全” 项目比赛任务书
  • 观测云产品更新|新增用户访问监测自动化追踪;新增 CDN 质量分析;新增自定义查看器导航菜单等
  • 大数据技术生态全景一览
  • CI/CD | 深入研究Jenkins后,我挖掘出了找到了摆脱低效率低下的方法
  • 刷LeetCode
  • Spring 大白话系列:工厂
  • 喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖
  • Linux概述
  • 中级嵌入式系统设计师2015下半年上午试题及答案解析
  • 华为OD机试模拟题 用 C++ 实现 - 删除指定目录(2023.Q1)
  • 【正点原子FPGA连载】第二十章AXI4接口之DDR读写实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 超出认知的数据压缩 用1-bit数据来表示32-bit的梯度 语音识别分布式机器学习 梯度压缩 论文精读
  • 深度剖析指针(上)——“C”
  • 学习 Python 之 Pygame 开发魂斗罗(六)
  • LeetCode题解:1238. 循环码排列,归纳法,详细注释
  • 全新后门文件Nev-3.exe分析
  • 线性回归系数解释
  • 22.2.27打卡 Codeforces Round #852 (Div. 2) A~D
  • 如何查看Spring Boot各版本的变化
  • 程序员是否要加入创业公司?
  • 2023软件测试工程师全新技术栈,吃透这些,起薪就是25k~
  • 【ChatGPT情商大考验】ChatGPT教我谈恋爱
  • C++类内存结构模型
  • HTML#4超链接标签,列表标签,表格标签和布局标签
  • 本科课程【数字图像处理】实验汇总
  • nginx安装lua、jwt模块,通过lua验证jwt实现蓝绿发布样例
  • 【redis的几种数据结构及在Java里的应用案例】
  • 【mybatis】 01- mybatis快速入门
  • 【C语言每日一题】杨氏矩阵(源码以及改进源码)
  • JavaScript 面向对象【快速掌握知识点】