系统的布局
- LinearLayout 线性布局
- RelativeLayout 相对布局
- FrameLayout 帧布局
- AbsoluteLayout绝对布局
- TableLayout 表格布局
- GridLayout 网格布局
- ConstraintLayout 约束布局
常用布局
- LinearLayout 线性布局
- FrameLayout 帧布局
- RelativeLayout 相对布局
- ConstraintLayout 约束布局
- 其它布局以及一些小知识
常用属性
layout_gravity:决定当前控件在父元素的位置
gravity:决定当前控件的子元素的位置
hint:显示的默认文字
线性布局
线性布局的子元素是按线性排列的,而排列的方向由orientation属性是horizontal还是vertical来决定
线性布局管理器允许为每一个子视图指定一个weight属性,以控制每一个子视图在可用空间内的相对大小。
-
android:orientation=“vertical” 设置纵向线性
-
android:orientation=“horizontal” 设置横向线性
-
android:layout_weight=“1” 设置比重
帧布局
这种布局所有控件都会被丢到左上角,后面的会覆盖前面的
相对布局
容易牵一发而动全身的布局。注意:横向纵向都要设置参考值,否则就是默认值处理,默认左上对齐Parent
每个View都是相对另一个View来确定位置,如果你要删除某个View,则很可能牵连其他的View。
一种是相对于父容器,相关的属性有:
android:layout_alignParentBottom(在父容器最下,true或false)、
android:layout_alignParentTop(在父容器最上) 、
android:layout_alignParentLeft(在父容器最左) 、
android:layout_alignParentRight(在父容器最右)、
android:layout_centerVertical(在父类的垂直居中,true或false)、
android:layout_centerHorizontal(在父类的水平居中)、
android:layout_centerInParent(在父类的水平垂直居中)。
android:layout_marginTop(和父容器上端的距离,单位dp)、
android:layout_marginBottom(和父容器下端的距离)、
android:layout_marginLeft(和父容器左端的距离)、
android:layout_marginRight(和父容器右端的距离)、
android:layout_margin(和父容器四周的距离)、
一种是相对于其他控件,相关的属性有:
android:layout_below(位于某控件下方,以id标记)、
android:layout_above(位于某控件上方)、
android:layout_toLeftOf(位于某控件左方)、
android:layout_toRightOf(位于某控件右方)、
android:layout_alignBottom(与某控件底部对齐,以id标记)、
android:layout_alignTop(与某控件顶部对齐) 、
android:layout_alignLeft(与某控件左边缘对齐) 、
android:layout_alignRight(与某控件右边缘对齐)、
android:layout_alignBaseline(与某控件的文本内容在一条直线上)
约束布局
我感觉这个布局很强大,又可叫做可视化布局,几乎可以很迅速的实现复杂的布局,但由于计算距离操作会带来一些性能损失。