简单!
全部博文(366)
分类: 嵌入式
2012-09-30 11:32:27
线性布局由LinearLayout类来代表,它将容器里面的组件一个挨着一个地排列起来。LinearLayout不仅可以控制各组件横向排列(通过设置android:orientation属性控制),也可以控制各组件纵向排列。
LInearLayout不会换行,当组件一个挨着一个排列到头之后,剩下的组件将不会被显示。
LInearLayout常用XML属性及相关方法:
Xml属性 |
相关方法 |
说明 |
android:gravity |
setGravity(int) |
设置布局管理器内组件的对齐方式。支持top、bottom、left、right、center_vertical、 fill_vertical、center_horizontal、fill_horizontal、center、fill、 clip_vertical、clip_horizontal几个属性值。可以同时指定多种对齐方式,如left|center_vertical表示出 现在屏幕左边,并且垂直居中。 |
android:orientation |
setOrientation(int) |
设置布局管理器内组件的排列方式,可设置为horizontal(水平排列)、vertical(垂直排列),但只能是其中之一。 |
说明:android:gravity属性中的多个属性值之间用竖线隔开,但竖线前后千万不能出现空格
2、表格布局
表格布局有TableLayout代表,表格布局采用行、列的形式来管理UI组件。
每次向TableLayout中添加一个TableRow,该TableRow就是一个表格行,TableRow也是容器,因此它也可以添加其他组件,没增加一个子组件该表格就增加一列。
如果直接向TableLayout中添加组件,那么这个组件将直接占用一行。
表格布局中,列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度取决于父容器的宽度(默认总是占满父容器本身)。
TableLayout的常用XML属性及相关方法
XMl属性 |
相关方法 |
说明 |
android:collapseColumns | setCollapseColumns(int,boolean) | 设置需要被隐藏的列序号,多个序号之间用逗号隔开 |
android:shrinkColumns | setShrinkAllColumns(boolean) | 设置允许被收缩的列序号,多个序号之间用逗号隔开 |
android:stretchColumns | setStretchAllColumns(boolean) | 设置允许被拉伸的列序号,多个序号之间用逗号隔开 |
3、帧布局
帧布局由Framelayout所代表,FrameLayout直接继承了ViewGroup组件。
帧布局容器为每个加入其中的组件创建一个空白区域(称为一帧),多有每个子组件占据一帧,这些帧都会跟据gravity属性执行自动对齐。
FrameLayout的常用XML属性及相关方法:
XML属性 |
相关方法 |
说明 |
android:foreground | setForeground(Drawable) | 设置帧布局容器的前景图像 |
android:foregroundGravity | setForegroundGravity(int) | 定义绘制前景图像的gravity属性 |
4、相对布局
相对布局由RelativeLayout代表,相对布局内子组件的位置总是相对兄弟组件、父容器来决定。如果A组件的位置由B组件位置来决定,Android要先定义B组件,再定义A组件。
RelativeLayout的XML属性及相关方法:
XML属性 |
相关方法 |
说明 |
android:gravit | setGravity(int) | 设置该布局容器内各子组件的对齐方式 |
android:ignoreGravity | setIgnoreGravity(int) | 设置哪个组件不受Gravity组件的影响 |
为控制布局容器中子组件的布局分布,RelativeLayout提供了一个内部类RelativeLayout.LayoutParams,该类提供了大量的XML属性来控制RelativeLayout布局容器中子组件的布局分布。
RelativeLayout.LayoutParams里只能设为boolean值的属性如下:
属性 |
说明 |
android:layout_centerHorizontal | 控制子组件是否位于布局容器的水平居中位置 |
android:layout_centerVertical | 控制子组件是否位于布局容器的垂直居中位置 |
android:layout_centerInParent | 控制子组件是否位于布局容器的中央位置 |
android:layout_alignParentBottom | 控制子组件是否与布局容器底端对齐 |
android:layout_alignParentLeft | 控制子组件是否与布局容器左边对齐 |
android:layout_alignParentRight |
控制子组件是否与布局容器右边对齐 |
android:layout_alignParentTop | 控制子组件是否与布局容器顶端对齐 |
RelativeLayout.LayoutParams里属性值为其它UI组件ID的XML属性如下:
属性 | 说明 |
android:layout_toRightOf | 控制该子组件位于给出ID组件的右侧 |
android:layout_toLeftOf | 控制该子组件位于给出ID组件的左侧 |
android:layout_above | 控制该子组件位于给出ID组件的上方 |
android:layout_below | 控制该子组件位于给出ID组件的下方 |
android:layout_alignTop | 控制该子组件跟给出ID组件的上边界对齐 |
android:layout_alignBottom | 控制该子组件跟给出ID组件的下边界对齐 |
android:layout_alignLeft | 控制该子组件跟给出ID组件的左边界对齐 |
android:layout_alignRight | 控制该子组件跟给出ID组件的右边界对齐 |
5、绝对布局
绝对布局由AbsoluteLayout代表。此布局不提供任何布局控制,而是由开发人员自己通过X、Y坐标来控制组件的位置,当使用AbsoluteLayout作为布局容器时,布局容器不在管理子组件的位置、大小--由开发人员自己控制。
使用绝对布局,每个子组件都可以指定如下两个XML属性:
layout_X:指定子组件的X坐标
layout_Y:指定子组件的Y坐标
注意:大部分时候,使用绝对布局都不是一个好思路,因为手机千差万别,屏幕、分辨率可能存在较大差异,使用绝对布局很难兼顾不同屏幕大小、分表率问题。
Android中一般支持如下一些距离单位:
px(像素):每个px对应屏幕上的一个点。
dip或dp(设备独立像素):一种基于屏幕密度的抽象单位,在每英寸160点的显示器上,1dip=1px,但随着屏幕密度的改变,dip和px的换算也发生改变。
sp(比例像素):主要处理字体的大小,可以根据用户的字体大小首选项进行缩放。
in(英寸):标准长度单位。
mm(毫米):标准长度单位。
pt(磅):标准长度单位,1/72英寸。