在Android中布局分为线性布局、相对布局、帧布局、表格布局、网格布局、绝对布局,常用的是线性布局和相对布局。
**布局本身也是一个组件(通过类的继承关系可以得知),布局文件中不管是什么组件包括布局本
身要指定layout_width和layout_height属性。
**布局上的属性是相互影响的,有着优先级。如weight,如果设置了布局的这个属性。组件的
layout_width或layout_height就要设置为0.
一、线性布局
uorientation 属性是指定线性布局的排列方向:
ühorizontal 水平(默认)
üvertical 垂直
ugravity属性是指定当前控件内容显示位置:
üleft 左边
üright 右边
ütop 上边
übottom 底边
ulayout_gravity属性是指定当前控件在父元素的位置:
üleft 左边
üright 右边
ütop 上边
übottom 底边
ulayout_weightSum(权重)属性是把线性布局中剩余空间分成N份.
ulayout_weight (权重)属性是指定当前控件在父元素(线性布局)中占N份.
uvisibility属性是控制布局是否显示:
üvisible 显示
üinvisible 不显示但占空间
ügone 隐藏
二、相对布局
位置、对齐
//属性值为@id/控件id名
uandroid:layout_toRightOf 在指定控件的右边
uandroid:layout_toLeftOf 在指定控件的左边
uandroid:layout_above 在指定控件的上边
uandroid:layout_below 在指定控件的下边
uandroid:layout_alignBaseline 跟指定控件水平对齐
uandroid:layout_alignLeft 跟指定控件左对齐
uandroid:layout_alignRight 跟指定控件右对齐
uandroid:layout_alignTop 跟指定控件顶部对齐
uandroid:layout_alignBottom 跟指定控件底部对齐
//属性值为true或者false
uandroid:layout_alignParentLeft 是否跟父布局左对齐
uandroid:layout_alignParentTop 是否跟父布局顶部对齐
uandroid:layout_alignParentRight 是否跟父布局右对齐
uandroid:layout_alignParentBottom 是否跟父布局底部对齐
uandroid:layout_centerVertical 在父布局中垂直居中
uandroid:layout_centerHorizontal 在父布局中水平居中
uandroid:layout_centerInParent 在父布局中居中
易于混淆的属性
1.layout_marginXXX与layout_paddingXXX的区别
padding是站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。
margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的view之间的距离,如
果同一级只有一个view,那么它的效果基本上就和padding一样。(网上经常有说margin是相对于
父控件,这种说法其实是错误的。)
如下面的是垂直排列LinearLayout中的两个TextView控件,layout_margintop属性分别为50和
100。因为是垂直排列,所以下面的那个TextView的top是相对于上一个控件的。效果图如下所示。
如果将LinearLayout的方向改为水平排列的话,两个TextView的top都是相对于父窗体的。效
果图如下: