写在前面
参考文章:
1.https://developer.android.google.cn/training/constraint-layout/#adjust-the-constraint-bias
2.https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout#VisibilityBehavior
3.https://blog.csdn.net/zxt0601/article/details/72736802
4.https://blog.csdn.net/guolin_blog/article/details/53122387
两篇官方文档,非常详细,第一参考资料,google浏览器打开,非常详细。第三篇有demo和中文解释,第四篇为郭神的,一些技巧,但都在官方文档可以找到。所以本文就重点在于记录一些自己学习的时候比较模糊和理解错的地方。
学习思路
类比其他布局,linearLayout(权重思想) ,RelativeLayout(参考系思想),这样理解就很方便了。
- 版本:最好是1.1之后的,因为之前的有很多属性都没有加,之后的版本才有,这是一个分水岭;
- 每个视图都有一个水平和垂直的约束,每个约束表示与另一个视图,父布局或不可见指南的连接或对齐。每个约束定义视图沿垂直轴或水平轴的位置;使用该布局时,可以利用IDE去减少我们的工作,参考郭霖文章和google的讲述;
- 理解layout_goneMarginLeft(right/top等):当参考系view不见了gone,layout_goneMarginLeft属性才有作用;可以参考自己的demo。
- 引入角度参考系:利用圆来进行view定位,要记住参考view的中心点作为圆心的;
- 可以设置guideline 来作为参考,不是非得parent。
- 引入chain的概念;
- 可以用view的自身宽高比限定长宽;
- constraint中android:layout_width和 android:layout_height 值有:
- 使用特定维度(文字值,例如123dp或Dimension参考)
- 使用WRAP_CONTENT,这将要求小部件计算自己的大小
- 使用0dp,相当于“ MATCH_CONSTRAINT”
前两个以与其他布局类似的方式工作。最后一个(0dp)将以匹配所设置的约束的方式调整窗口小部件的大小。如果设置了边距,则在计算中将考虑它们. 好好理解第8点,很重要。如果不明白可以看demo 和第三篇文章。
- android:min/maxWidth 属性只有在view为wrap_content 才有用,这个和view的绘制模式很像。
- 后面尝试在项目中使用,才能更深刻领悟。