基础界面布局
1.Android布局的概念图
图 1-1 Android布局管理器的类图
图 1-2 Android布局的xml关系图
由上述两张图结合可知,android布局类在代码层面是ViewGroup的子类,布局也是布局管理器,因为布局里面还可以添加布局;布局管理器里面既可以添加多个布局管理器又可以添加多个控件,而控件里面不能在添加布局或控件了。
2.布局的通用属性
属性名称 | 功能描述 |
---|---|
android:id | 设置布局的标识 |
android:layout_width | 设置布局的宽度(dp) |
android:layout_height | 设置布局的高度(dp) |
android:background | 设置布局的背景 |
android:layout_margin | 设置当前布局与屏幕边界或与周围控件的距离 |
android:padding | 设置当前布局边缘与该布局中控件边缘的距离 |
重要属性说明:
●android:id ** 用于设置当前布局的唯一标识。。为布局指定android:id 属性后,在R.java文件中,会自动生成对应的int值。在Java代码中通过为findViewById()方法传入该int值来获取该布局对象。(不同的布局文件中可以有相同的标识名,因为R.java文件是按照文件路径来查找的)
●android:background** 用于设置布局背景,其值可以引用图片资源,也可以是颜色资源(尽量使用xml文件,使用图片资源会占用较大的内存)
3.线性布局(LinearLayout)
3.1.常用子属性
属性名称 | 功能描述 |
---|---|
android: orientation | 设置布局内控件的排列顺序 |
android: layout_weight | 在布局内设置控件权重,属性值可直接写int值 |
android:gravity | 内部控件对齐方式 |
●android: oruentation属性。用于设置LinearLayout布局中控件的排列顺序,其可选值为vertical和horizontal。其中:
①vertical:表示LinearLayout布局内控件依次从上到下竖直排列。
②horizontal:表示LinearLayout布局内控件依次从左到右水平排列。
●**android:layout_weight:**权重,用来分配当前控件在剩余空间的大小,只有比例值,这在进行屏幕适配时起到关键作用。使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把width设置为零。
●要把android:gravity与android:layout_gravity区分开,layout_gravity是用来设置自身相对于父元素的布局
4.表格布局(TableLayout)
表格布局继承自LinearLayout,通过TableRow设置行,列数由TableRow中的子控件决定. 如果直接在TableLayout中添加子控件会占据整个一行。
4.1.常用布局子属性
属性名称 | 功能描述 |
---|---|
android:stretchColumns | 设置可被拉伸的列。如:android:stretchColumns=“0”,表示第1列可被拉伸 |
android:shrinkColumns | 设置可被收缩的列。如:android:shrinkColumns=“1,2”,表示第2,3列可收缩 |
android:collapseColumns | 设置可被隐藏的列。如:android:collapseColumns=“0”,表示第1列可被隐藏 |
注意: shrinkColumns只有在行超过屏幕时生效,第0列和第2列收缩的幅度是一样的。stretchColumns只有在所有行都没有沾满横向屏幕时才会生效,如果有一行已经正好或者超过屏幕的宽度,那么该属性无效。
4.2.布局中控件的常用属性
属性名称 | 功能描述 |
---|---|
android:layout_column | 设置该控件显示的位置,如android:layout_column=“1” 表示在第2个位置显示 |
android:layout_span | 设置该控件占据几行,默认为1行 |
5.帧布局(FrameLayout)
用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。(通常通过margin,或者layout_gravity来移动子控件)
PS.一般把framelayout做容器,不当布局来看待(用于自定义viewGroup)
6.相对布局(RelativeLayout)
通过相对定义的方式指定子控件的位置。
●相对于父控件 android:layout_alignParentxxxx=“true”
●相对给定Id控件,例如:android:layout_above=“@id/**