布局
布局管理器
双标签容器,可以嵌套其它组件。 包括框架、线性、相对、表格和网格布局。另有绝对布局已淘汰。
LinearLayout 线性布局
所有子元素在水平或垂直方向依次排列,子组件高度或宽度超过父容器时会溢出不显示。
常用属性
orientationgravitylayout_gravitybackgroundlayout_width/layout_heightweight:宽度/高度权重
约束布局
标签名为androidx.constraintlayout.widget.ConstraintLayout。
api文档:ConstraintLayout | API reference | Android Developers
控件之间、控件与父布局之间具有约束关系,控件的位置按照约束计算,可以按比例约束控件的位置和尺寸。
约束布局最主要的参照是四条边,即left、right、top和buttom,除此以外还有文字基准线(baseline),用于对其文字;start和end,和左右类似但是相对参照。
存在相悖的约束时,后定义的会覆盖先定义的。
子元素常用属性
id:约束布局中作为基准的元素必须定义id,值的格式为"@+id/具体的id"。app:layoout_constraintLeft_toRightOf:当前控件的左边框对齐某个控件的右边框,值为被对齐的边框的id,属性中的参照均可按情况更改为上下左右和基准线 如果把四边的对齐都设置为parent,则代表在父级中居中。其余情况只需要保证上下和左右各有一边对齐即可。android:layout_marginBottom:元素下边缘和相对对齐位置的偏移,属性中的方向均可按情况更改为上下左右和基准线。 其值是一个带单位的数值,不能是负数。
约束链
提供了以下属性:
android:layout_constraintHorizontal_chainStyle: 该属性只需要在约束链的首个元素中设置,根据约束的方向更改Herizontal和Vertical。
布局嵌套
有如下规则:
- 根布局管理器需包含且必须包含
xmlns属性 - 一个布局文件中有且仅有一个根布局管理器,也就是一个
xmlns属性。 - 嵌套层次不建议超过5,过深的嵌套会影响性能。