在 Android 中,所有的 UI 元素都是通过 View 和 ViewGroup 构建的,两者之间也可以相互嵌套。这里直接引用Android.view.View 类全貌【思维导图】里面的视图类 View 及子类的继承关系图:
从上图中可以看出所有的布局控件都直接/间接继承了 ViewGroup,所以它们都支持 ViewGroup 的属性:
属性 | 描述 |
---|---|
android:id | 布局标识 |
android:layout_width | 布局宽度 |
android:layout_height | 布局高度 |
android:background | 布局背景 |
android:layout_margin | 布局外边距 |
android:padding | 布局内边距 |
android:minWidth | 布局最小宽度 |
android:minHeight | 布局最小高度 |
RelativeLayout(相对布局)
相对布局可以设置某一个视图相对于其他视图的位置,即是以其他控件或父容器为参照物设置位置的。常用属性:
类型 | 属性 | 描述 |
---|---|---|
相对父级 | android:layout_centerInParent | 相对父级水平垂直居中 |
android:layout_centerVertical | 相对父级垂直居中 | |
android:layout_centerHorizontal | 相对父级水平居中 | |
android:layout_centeralignParentTop | 相对父级顶部对齐 | |
android:layout_centeralignParentRight | 父级水右对齐 | |
android:layout_centeralignParentBottom | 父级水底部对齐 | |
android:layout_centeralignParentLeft | 父级水左对齐 | |
相对兄弟 | android:layout_above | 在某个控件上方 |
android:layout_below | 在某个控件下方 | |
android:layout_toLeftOf | 在某个控件左侧 | |
android:layout_toRightOf | 在某个控件右侧 | |
android:layout_alginTop | 与某个控件顶部对齐 | |
android:layout_alginBottom | 与某个控件底部对齐 | |
android:layout_alginLeft | 与某个控件左侧对齐 | |
android:layout_alginRight | 与某个控件右侧对齐 |
LinearLayout(线性布局)
线性布局是最常用的布局方式,可分为水平线性布局和垂直线性布局。常用属性:
属性 | 描述 |
---|---|
android:orientation | 布局排列方式 |
android:gravity | 相对父级对齐方式 |
android:layout_gravity | 相对父级对齐方式 |
android:layout_weight | 权重,等比划分区域 |
android:divider | 分割线 |
android:showDividers | 分割线所在位置 none、beginning、end、middle |
android:dividerPadding | 分割线的 padding |
RelativeLayout(网格布局)
网格布局是 Android4.0 新增的布局,它实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发。 网格布局用一组无限细的直线将绘图区域分成行、列和单元,并指定控件的显示区域和控件在该区域的显示方式。常用属性:
属性 | 描述 |
---|---|
android:columnCount | 列总数 |
android:rowCount | 行总数 |
android:layout_column | 第几列 |
android:layout_row | 第几行 |
android:layout_columnSpan | 跨列 |
android:layout_rowSpan | 跨行 |
android:dividerPadding | 分割线的 padding |
TableLayout(表格布局)
表格布局将子元素的位置分配到行或列中,与网格布局不同的是,它不需要明确多少行、多少列。一个 TableLayout 由许多 TableRow 组成,每个 TableRow 都会定义一个 Row。常用属性:
属性 | 描述 |
---|---|
android:stretchColumns | 该列被拉伸 |
android:shrinkColumns | 该列被收缩 |
android:collapseColumns | 该列被隐藏 |
android:layout_column | 单元格显示位置 |
android:layout_span | 单元格行数,默认 1 行 |
FrameLayout(帧布局)
帧布局用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。因此也可以将 FrameLayout 称为堆栈布局,或框架布局。常用属性:
属性 | 描述 |
---|---|
android:foreground | 帧容器的前景布局,前景图像永远处于帧布局最上面,不会被覆盖 |
android:foregroundGravity | 前景图像显示位置 |
RelativeLayout(约束布局)
约束布局是 Android Studio2.2 新添加的布局。 它适合使用可视化的方式编写界面布局,优点是减少嵌套,优化布局,可以直接拖拽的方式布局;缺点也显而易见,修改的时候容易错乱,代码可读性变差。不推荐使用,这里不过多描述。
参考文章:
[越努力,越幸运!]