解耦API & Intrinsics
1.解耦API
在某些情况下,最好将约束条件与应用它们的布局分离开来。例如,我们可能会希望根据屏幕配置来更改约束条件,或在两个约束条件集之间添加动画效果
- 将ConstraintSet作为参数传递给ConstraintLayout
- 使用layoutId修饰符将在ConstraintSet中创建的引用分配给可组合项
案例:想让横屏竖屏的margin不一样
先为button和text写好约束
1 | private fun decoupledConstraints(margin: Dp): ConstraintSet{ |
直接把约束传入ConstraintLayout
1 |
|
2.Intrinsics
Compose只测量子元素一次,测量两次会引发运行时异常。但是,有时在测量子元素之前,我们需要一些有关子元素的信息
Intrinsics允许在实际测量之前查询子项
(min|max) IntrinsicWidth:鉴于此高度,可以正确绘制内容的最小/最大宽度是多少
(min|max)IntrinsicHeight:鉴于此宽度,可以正确绘制内容的最小/最大高度是多少
使用案例:
测量了要包含两个text所需要的最小高度,在中间加入了一条竖线
1 |
|