3.1什么是布局管理器
(1)为什么要进行界面布局?
使得页面能够有条理,便于观看和理解。
- 什么是布局管理器?
就是用来控制组件如何摆放的,例如棋盘和棋子,棋盘就是布局管理器,棋子就是组件,使得页面能够适应不同型号的手机。
- 常用的布局管理器
RelativeLayout(相对布局管理器)
LinearLayout(线性布局管理器)
FrameLayout(帧布局管理器)
TableLayout(表格布局管理器)
AbsoluteLayout(绝对布局管理器)(2.0之后就很少用了)
GridLayout(网格布局管理器)(4.0之后推出,使用起来比较方便,基本上可以代替表格布局管理器)
3.2 RelativeLayout(相对布局管理器)
(1)以某个布局组件为参考点,别的组件则根据参考点组件进行摆放。
(2)使用场景:根据组件的相对位置来进行摆放时
(3)属性:android:gravity
android:ignoreGravity后面跟的是id 如:Android:ignoreGravity:”@id/user”
android:layout_weight
android:layout_height
android:paddingTop
android:paddingButtom
android:paddingLeft
android:paddingRight等等
(4)内部类:RelativeLayout.LayoutParams,通过内部类提供的一些xml属性,可以更好的控制相对布局管理器中各组件的分布方式,需要设置在组件上。
相对于那个组件摆放:android:layout_above
android:layout_below
android:layout_toLeftof
android:layout_toRightof
设置组件与布局管理器那边对齐:(值为布尔型)
android:layout_alignParentButtom
android:layout_alignParentTop
android:layout_alignParentLeft
android:layout_alignParentRight
设置组件与那个组件的边界对齐
android:layout_alignButtom
android:layout_alignTop
android:layout_alignLeft
android:layout_alignRight
设置组件位于布局管理器的那个位置:(值为布尔型)android:layout_centerHorizontal//水平居中
android:layout_centerParent//中间
android:layout_centerVertical//垂直居中
3.3 LinearLayout(线性布局管理器)
(1)将放入其中的组件按照垂直或者水平的方向来进行排列。分为垂直线性布局管理器和水平线性布局管理器。通过android:orientation="vertical"和android:orientation="horizontal"来实现。
(2)主要属性:android:orientation
android:gravity
(3)子组件属性:android:layout_weight:用于设置组件所占的权重,即组件占父容器的比例。
3.4 FrameLayout(帧布局管理器)
(1)为每一个放入其中的组件创建一个空白的区域,这些组件按照先后顺序层叠放入,后面的组件会覆盖前面的组件。通常用于显示层叠的内容,并且还可以实现拖动等动画效果。
(2)属性:android:foreground:为当前的帧布局管理器设置一个前景图像
android:foregroundGravity:设置前景图像的位置
前景图像:始终位于最上层的图像,其他图像不是能把它盖住的。
3.5 TableLayout(表格布局管理器)
(1)以行列的形式来管理放入其中的UI组件
(2)每添加一个<TableRow></TableRow>就多一行,它也是一个容器,在其内部每添加一个组件就占一列。每添加一个组件就增加一行。
(3)属性:
android:collapseColumns 某一列被隐藏
例子:android:collapseColumns="1"设置第2列被隐藏,列是从0开始
android:collapseColumns="1,2"设置第2列和第3列被隐藏
android:stretchColumns设置某一列允许被拉伸,以适应屏幕大小
例子:android:stretchColumns="1" 设置第2列允许被拉伸
android:shrinkColumns设置某一列允许被收缩,以适应屏幕大小
例子:android:shrinkColumns="1"设置某2列允许被收缩
3.6 GridLayout(网格布局管理器)
(1)屏幕被虚拟的细线化成行、列、单元格,每个单元格放置一个组件
与表格布局管理器有相似之处,但是既可以跨行显示又跨列显示,这在表格布局管理器中是不可以的。且在网格布局管理器中,一行占满后,超出容器的组件将会自动换行,而在表格布局管理器中超出容器的组件将不会显示。
- 属性:
android:columnCount 用于指定网格的最大列数
android:orientation 当我们没有为放入其中的组件分配行和列时,指定这些组件的排列方式,vertical垂直排列,horizontal水平排列
android:rowCount 用于指定网格的最大行数
- 内部类:GridLayout.LayoutParams 为了控制各子组件的分布方式
属性:android:layout_column 用于指定子组件位于网格的第几列
例子:android:layout_column=”1”指定子组件位于网格的第二列
android:layout_columnSpan 用于表示子组件横向跨几列
android:layout_columnWeight 子组件在水平方向的权重,分配水平剩余空间的比例
android:layout_gravity
android:layout_row 用于指定子组件位于网格的第几行
android:layout_rowSpan 用于表示子组件纵向跨几行
android:layout_rowWeight 子组件在垂直方向的权重,分配垂直剩余空间的比例
3.7布局管理器的嵌套
嵌套原则:
(1)根布局管理器必须包含xmlns属性;
(2)在一个布局文件中,最多只能有一个跟布局管理器,如果需要有多个还需要使用一个跟布局管理器将他们括起来;
(3)不能嵌套太深,如果嵌套太深,则会影响性能,主要体现在页面加载速度慢。