Android中有六大布局
分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局) 而今天我们要讲解的就是第一个布局,LinearLayout(线性布局)
1. LinearLayout(线性布局)
常用属性:
orientation:布局中组件的排列方式,有horizontal(水平),vertical(竖直,默认),两种方式
gravity:控制组件所包含的子元素的对齐方式,可多个组合,如(left|buttom)
layout.gravity:控制该组件在父容器里的对其方式,布局的宽度,通常不直接写数字的,用wrap_content(组件实际大小),fill_parent或者 match_parent填满父容器
id:为该组件设置一个资源id,在java文件中可以通过findViewById找到该组件
background:为该组件设置一个背景图片,或者直接用颜色覆盖
Weight:该属性是用来等比例划分区域,最简单的用法:要等比例划分,分谁,谁分为0,weight按比例即可。
divider分割线:该属性用于为LinearLayout设置分割线图片,通过show Dividers来设置分割线的所在位置,有四个可选值none,middle,begining,end
2.RelativeLayout(相对布局)
在Eclipse中开发Android程序时,默认采用的就是相对布局,相对布局通常有两种形式,一种是相对于容器而言的,一种是相对于控件而言的。
为了能准确定位布局中的控件,相对布局提供了很多属性。
基本属性:gravity设置容器内组件的对齐方式
ignoreGravity设置了该属性为true的属性的组件,将不受gravity属性的影响
根据父容器定位:layout_alignParentLeft 左对齐
layout_alignParentRight 右对齐
layout_alignParentTop 顶部对齐
layout_alignParentBottom 底部对齐
android:layout_centerHorizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInParent 中间位置
根据兄弟组件定位:
layout_toLeftOf 参考组件的左边
layout_toRightOf 参考组件的右边
layout_above 参考组件的上方
layout_below 参考组件的下方
layout_alignTop 对齐参考组件的上边界
layout_alignBottom 对齐参考组件的下边界
layout_alignLeft 对齐参考组件的左边界
layout_alignRight 对齐参考组件的右边界
margin(偏移) 设置组件与父容器的边距,又叫偏移
layout_margin 设置组件上下左右的偏移量
layout_marginLeft 设置组件离左边的偏移量
layout_marginRight 设置组件离右边的偏移量
layout_marginTop 设置组件离上面的偏移量
layout_marginButtom 设置组件离下面的偏移量
padding(填充) 设置组件内部元素间的边距
android:padding 往内部元素的上下左右填充一定边距
paddingLeft 往内部元素的左边填充一定的边距
paddingRight 往内部元素的右边填充一定边距
paddingTop 往内部元素的上方填充一定边距
paddingBOttom 往内部元素的下方填充一定边距
3.TableLayout(表格布局)
确定行数与列数
- ①如果我们直接往TableLayout中添加组件的话,那么这个组件将占满一行!!!
- ②如果我们想一行上有多个组件的话,就要添加一个TableRow的容器,把组件都丢到里面!
- ③tablerow中的组件个数就决定了该行有多少列,而列的宽度由该列中最宽的单元格决定
- ④tablerow的layout_width属性,默认是fill_parent的,我们自己设置成其他的值也不会生效!!! 但是layout_height默认是wrapten——content的,我们却可以自己设置大小!
- ⑤整个表格布局的宽度取决于父容器的宽度(占满父容器本身)
- ⑥有多少行就要自己数啦,一个tablerow一行,一个单独的组件也一行!多少列则是看tableRow中 的组件个数,组件最多的就是TableLayout的列数
android:collapseColumns:设置需要被隐藏的列的序号
android:shrinkColumns:设置允许被收缩的列的列序号
android:stretchColumns:设置运行被拉伸的列的列序号
4.FrameLayout(帧布局)
FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置!
两个属性:
- android:foreground:*设置改帧布局容器的前景图像
- android:foregroundGravity:设置前景图像显示的位置
5.GridLayout(网格布局)
- 可以自己设置布局中组件的排列方式
- 可以自定义网格布局有多少行,多少列
- 可以直接设置组件位于某行某列
- 可以设置组件横跨几行或者几列
- 相关属性总结:
- 设置排列方式 android:orientation vertical(竖直,默认)或者horizontal(水平)
- android:layout_gravity cneter,left,right,buttom
- 设置几行几列 设置行数 android:rowCount
- 设置列数 android:columnCount
- 设置组件所在的行列 第几行 android:layout_row (从0开始)
- 第几列 android:layout_column
- 设置组件跨几行几列 横跨几行 android:layout_rowSpan 纵向横跨
- 横跨几列 android:layout_columnSpan 横跨几列
- 6.AbsoluteLayout(绝对布局)
①控制大小: android:layout_width:组件宽度 android:layout_height:组件高度