一、概述
UI布局需要安卓程序员完成,目前在用的有4个布局(还有一个绝对布局已被放弃使用了),按使用频率由大到小排列如下:
1. 线性布局
<LinearLayout></LinearLayout>
默认是vertical(垂直的),如果是水平的,当组件过多,不会自动换行,太多组件会显示不出来全部的
2. 相对布局
<RelativeLayout></RelativeLayout>
3. 帧布局
<FrameLayout></FrameLayout>
帧布局每次添加的控件都显示在最上面,最后显示在界面上的是最后添加的一个控件。帧布局应用电影,如看视频时,层叠的图标(暂停)等图标。
4. 表格布局
<TableLayout><TableRow></TableRow></TableLayout>
基本不用,可以用表格实现的布局,都能用线性布局和相对布局来完成。
- a) 没有用TableRow,每一个组件占用一行
- b) 用了TableRow,每一个TableRow占用一行,其中的组件占用一列
布局之间是可以相互嵌套使用的,用不同的组合,可以排出丰富的界面。
二、UI布局的常用属性
1.LinearLayout 线性布局
- orientation 属性是指定线性布局的排列方向:
horizontal 水平
vertical 垂直 - gravity属性是指定当前控件内容显示位置:
left 左边
right 右边
top 上边
bottom 底边 - layout_gravity属性是指定当前控件在父元素的位置:
left 左边
right 右边
top 上边
bottom 底边 - layout_weightSum(权重)属性是把线性布局中剩余空间分成N份.
- layout_weight (权重)属性是指定当前控件在父元素(线性布局)中占N份.
visibility属性是控制布局是否显示:
visible 显示
invisible 不显示但占空间
gone 隐藏
2.RelativeLayout 相对布局
- 相对于指定控件的方向
android:layout_toRightOf 在指定控件的右边
android:layout_toLeftOf 在指定控件的左边
android:layout_above 在指定控件的上边
android:layout_below 在指定控件的下边 - 相对于指定控件的对齐
android:layout_alignBaseline 跟指定控件水平对齐
android:layout_alignLeft 跟指定控件左对齐
android:layout_alignRight 跟指定控件右对齐
android:layout_alignTop 跟指定控件顶部对齐
android:layout_alignBottom 跟指定控件底部对齐 - 相对于父布局的对齐(true或false)
android:layout_alignParentLeft 是否跟父布局左对齐
android:layout_alignParentTop 是否跟父布局顶部对齐
android:layout_alignParentRight 是否跟父布局右对齐
android:layout_alignParentBottom 是否跟父布局底部对齐
android:layout_centerVertical 在父布局中垂直居中
android:layout_centerHorizontal 在父布局中水平居中
android:layout_centerInParent 在父布局中居中
3.TableLayout 表格布局
- 列的伸缩
android:shrinkColumns 收缩列
android:stretchColumns 拉伸列
android:collapseColumns 隐藏列 - 合并列
android:layout_column 指定列(作用在列的身上)
android:layout_span 合并列(作用在列的身上)
三、像素问题
- 推荐使用的单位
dp/dip用像素除以屏幕的宽高后,根据密度得出的一个数,对于不同分辨率的兼容性要好
sp:是用像素和屏幕处理过的,用于字体大小属性。 - 不推荐使用的单位
px:纯粹的分辨率大小,在不同分辨率的屏幕上的显示会有问题的。
pt:是磅数的意思 ,1磅等于1/72英寸