ConstraintLayout--使用笔记

本文详细介绍了Android的ConstraintLayout使用,包括遇到的问题、布局比较、概念自定义及使用技巧。讨论了依赖、相对位置、百分比设置、margin、宽高比例、Chains、GuideLine、barrier等特性,并提及了MotionLayout和imageFilterView的应用。
摘要由CSDN通过智能技术生成

索引

性能分析:
https://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652044589&idx=1&sn=36f09ada2b279b0c56fcd91085ebe93a&chksm=808d5d68b7fad47e4de2704b24e51fd57799d19f1f7b334aaa9bfa2671c34ca8cc6bcd493882&scene=38#wechat_redirect

试问:多少次计算抵得上一个层级嵌套?

类索引(功能说明):
https://developer.android.google.cn/reference/android/support/constraint

可视化使用:
https://developer.android.google.cn/training/constraint-layout/

遇到过的问题

Q:不支持merge,然后include的时候,constraint属性无法继承

A:include的时候需要对include标签添加layout_width, layout_height


A:goneMargin无法传递。比如ViewA,ViewB,ViewC,之间相差5margin值,用后者marginStart前者,但是因为ViewA是第一个,即无marginStart。此时如果ViewA设置为gone,此时ViewB成为第一个,为了显示效果,需要ViewB设置goneMarginStart为0dp。同理如果ViewA,ViewB设置为gone,ViewC作为第一个需要设置goneMarginStart为0。但是如果只有ViewB隐藏了,ViewC替代了ViewB的位置,需要goneMarginStart保持为5。于是就冲突了。

Q:
以前的整体item,需要响应点击事件。比如个人资料–头像、姓名作为一个ImageView和TextView经常放在一起。
而ConstraintLayout中两者是单独放置的。 那么产生类似的两个问题:

  1. 背景色的显示范围
  2. 点击事件的点击范围

A:
一般要通过创建一个新的view覆盖两者;或者把两者的padding全部填充完全


Q:group 有时候使用setVisibility不生效

A:因为group的刷新关联view是通过updatePreLayout 来处理的,而这个方法只有在布局变化的时候会被调用,即需要requestLayout。所以如果只是单纯的设置visibile/invisible, 可能无效。


Q:
多个group,包含相同的几个view,互相设置visible会明显延迟

A:
这个还没有仔细研究过延迟机制,当时比较急,就手动findView再执行逻辑了。按文档描述(下文),以后一个的group为准


A:
使用PlachHolder占位时,试了一下,显示在PlaceHolder的view会显示不全。(如写有HelloWorld的TextView只显示了H)


A:
barrierAllowsGoneWidgets的作用没有看懂啊

布局比较

暂时不写。大家都比较了解吧

  • FrameLayout

  • LinearLayout

  • RelativeLayout

  • GridLayout

  • PercentRelativeLayout

高度可以直接使用宽度百分比,constraintlayout目前好像不行,只能用一个view来设置宽高比替代实现

概念自定义

在这个世界,View之间靠约束(Constraint)产生关联。
假设ViewA设定了基于ViewB的约束,那么ViewA被称为“被约束者”,ViewB被称为“约束者”。
假设ViewA设定了基于ViewGroupA的约束,那么ViewA被称为“约束子”,ViewGroupA被称为“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值