RelativeLayout ----- 相对布局
1.RelativeLayout不是相对于单体的布局,每一个组件的布局都要依赖另外一个或多个组件,这个布局表示的是一个组件相对于另一个组件(或者是整个RelativeLayout布局)的相对位置。
2.虽然这个布局管理器带有android:gravity属性,但是一般都不使用这个属性,因为一旦固定了RelativeLayout总的对齐方式,那么就不能再去设置其子组件的相对位置了,因为设置了也没用。
3.RelativeLayout的子组件中,如下方法设置这个子组件相对整个布局管理器的位置:
android:layout_centerHorizontal ----- 水平居中
android:layout_centerVertical ------- 垂直居中
android:layout_centerInParent ------ 在中央位置(其实同时使用水平居中和垂直居中也可以达到这个效果)
android:layout_alignParentLeft ------ 与左边对齐
android:layout_alignParentRight ------ 与右边对齐
android:layout_alignParentTop -------- 与顶部对齐
android:layout_alignParentBottom ------- 与底部对齐
4.RelativeLayout的子组件中,如下方法设置这个子组件相对另一个组件的位置(里面传入对应组件的android:id) :
//下面4个方法分别设置组件位于指定ID组件的相对位置
android:layout_toRightOf ---- 右侧
android:layout_toLeftOf ------- 左侧
android:layout_above ------- 上方
android:layout_below ------- 下方
//设置好相对位置之后,下面4个方法分别设置该组件与指定ID组件的对齐方式
android:layout_alignTop ------ 上边界对齐
android:layout_alignBottom ------ 下边界对齐
android:layout_alignRight ---- 右边界对齐
android:layout_alignLeft ------- 左边界对齐
GridLayout ------ 网格布局
1.Android 4.0 才有的布局,在创Android项目的时候,在最低版本要求的时候至少要选4.0以上的,如下图:
2.GridLayout常用易忘的方法:
android:rowCount(setRowCount(int)) ------- 行数
android:columnCount(setColumnCount(int)) -------- 列数
3.GridLayout子容器的方法:
android:layout_column ------- 指定该组件位于j列
android:layout_row ------- 指定该组件位于i行
android:layout:gravity(setGravity) ----- 设置该组件以何种方式占据该网络的空间(也就是如果还有剩余的空间,用特定的设置可以把组件拉长以达到占满空间的效果)
android:layout_columnSpan ------- 设置该子组件在GridLayout横向上夸几列
android:layout_rowSpan ---------- 设置该子组件在GridLayout纵向上夸几行
对于指定组件的位置,可以用GridLayout.Spec这个内部类来用代码动态指定,代码如下:
//指定该组件所在的行
GridLayout.Spec rowSpec = GridLayout.spec(i/4+2);
//指定该组件所在的列
GridLayout.Spec columnSpec = GridLayout.spec(i%4);
//构造一个特定位置
GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec, columnSpec);
//指定该组件占满父容器
params.setGravity(Gravity.FILL_HORIZONTAL);
//向GridLayout中利用这个位置加入组件
layout.addView(bn, params);
如果需要指定
该子组件在GridLayout横向上夸几列几行,那么就要使用GridLayout.spec的一个重载的方法,如下:
GridLayout.Spec columnSpec = GridLayout.spec(0, 2);
这个方法指定该组件位于第0列,而且夸2行