2015.11.19
看“Android.老罗”的笔记以为Android开发入门的好瓜笔记。
1. 布局
1.1 Android的布局方式
简单来说,Activity是布满整个窗口或悬浮于其它窗口上的交互界面。为了适应各种界面风格,Android提供了5种布局:
- FrameLayout - 框架(帧)布局
- LinearLayout - 线性布局
- RelativeLayout - 相对布局
- TableLayout - 表格布局
- AbsoluteLayout - 绝对布局
利用以上5种布局可在手机屏幕上随心所欲的摆放各种空件。
1.2 Android视图创建方式
在Android系统中,任何的可视化控件都是从android.view.View继承的。可以使用两种方法来创建视图:
- 使用XML布局文件方式配置View的相关属性,然后装载这些View。
- 完全使用java代码来创建View。
1.3 XML布局文件常用属性
所有的XML布局文件必须包含在res/layout目录中。xml文件的编写遵循Android的语法规定。以下介绍5种布局中的一些布局属性。
(1) 5种布局都包含的属性
长度表示方式
px - 屏幕实际像素;dp(dip) - 屏幕物理尺寸,大小为1英寸的1/72;sp(与刻度无关的像素) - 与dp类似,但是可以根据用户的字体大小首选项进行缩放。
长度设计技巧:如果设置表示长度、高度属性时可以使用dp或sp;但如果设置字体,需要使用sp;dp是与密度无关,sp除了跟密度无关外,还与scale无关;如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
android:layout_margin*
控件边缘相对于父控件的边距。
padding*
控件内容相对于控件边缘的边距。
android:gravity和android:layout_gravity
android:gravity用于设置View组件的对齐方式(View视图的内容的对齐方式);android:layout_gravity用于设置Container组件(包含内容的组件)的对齐方式。
(2) LinearLayout布局
可嵌套定义,但不建议嵌套多层线性布局,加载这样的布局文件会比较耗时。
android:layout_width和android:layout_height
属性 | 描述 |
wrap_content | 填满父控件的空白 |
fill_parent | 表示大小刚好足够显示当前控件里的内容,安卓中的fill_parent和match_parent是一样的 |
match_parent | 在Android 2.2中启用match_parent,不用fill_parent |
android:layout_weight权重属性
用于给一个线性布局中的诸度视图的重要度赋值。所有视图的layout_weight的默认值为0 - 需要显示多大就显示多大的屏幕空间。若给视图的该属性赋予一个高于0的值,则将父视图中的可用空间分割,分割的大小取决于每一个视图的layout_weight值以及该值在当前屏幕布局的所有视图的layout_weight值之和中所占的比率而定。
(3) FrameLayout布局
框架布局是最简单的布局方式,所有添加到这个布局中的视图都是以层叠的方式显示。第一个添加到框架布局中的视图显示在最底层,最后一个被放在最顶层,上一层的视图会覆盖下一层的视图,因此框架布局类似堆栈布局。
属性 | 描述 |
top | 将视图放到屏幕顶端白 |
buttom | 将视图放到屏幕的底端 |
left | 将视图放在屏幕的左侧 |
right | 将视图放在屏幕的右侧 |
center_vertical | 将视图按照垂直方向居中显示 |
horizontal_vertical | 将视图按照水平方向居中显示 |
(4) RelativeLayout布局
此布局可以设置某一个视图相对于其他视图的位置,这些位置包括上下左右等。
属性 | 描述 |
android:layout_below | 在某元素下方 |
android:layout_above | 在某元素的上方 |
android:layout_toLeftOf | 在某元素的左边 |
android:layout_toRightOf | 在某元素的右边 |
(5) TableLayout布局
在布局中,一个列的宽度由该列中最宽的那个单元格指定,而表格的宽度是有父容器指定的。在此布局中可以设置3种属性:
属性 | 描述 |
Shrinkable | 列宽度可以进行收缩,以使表格能够适应其父容器的大小 |
Stretchable | 列宽度可以拉伸,以使填满表格中的空闲空间 |
Collapsed | 列被隐藏 |
列可以同时具有Shrinkable和Stretchable属性,在这种情况下,该列宽度将任意拉伸或收缩以适应父容器。
TableLayout继承自LinearLayout类。除了继承来自父类的属性和方法,TableLayout还包含表格布局所特有的属性和方法。
属性 | 描述 |
android:collapseColumns | 设置指定列好的列属性为Collapsed |
android:shrinkColumns | 设置指定列好的列属性为Shrinkable |
android:strethcColumns | 设置指定列号的列属性为Stretchable |
TableLayout中的列序号是从0开始计算的。setShrinkAllColumns和setStretchAllColumns实现的功能是将表格中的所有列设置为
Shrinkable或Stretchable。
1.4 使用XML布局文件定义视图并将视图应用到活动中的步骤
[1] 所有的布局文件必须包含在res/layout目录中。xml文件的编写遵循Android的语法规定。
[2] 通常在活动中的onCreate()方法使用setContentView()方法来加载xml布局文件。
[3] 通过XML文件中的视图资源在R.java文件中生成的R类名访问具体的视图。
[2015.11.19 - 20:43]