索引
试问:多少次计算抵得上一个层级嵌套?
类索引(功能说明):
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中两者是单独放置的。 那么产生类似的两个问题:
- 背景色的显示范围
- 点击事件的点击范围
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被称为“