布局管理器:控制组件是如何摆放的。
5种常用的布局管理器:
适用于:可以根据组件间的相对位置来摆放时。
属性:
android:gravity,控制摆放位置
android:ignoreGravity,说明谁不受gravity控制,后跟id。
RelativeLayout.LayoutParams为其内部类
该类提供的XML属性:
决定组件相对于参考组件的位置,属性值为id:
android:layout_above
android:layout_below
android:layout_toLeftOf
android:layout_toRightOf
设置组件与布局管理器哪边对齐,属性值为布尔类型:
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight
android:layout_alignParentTop
设置组件与某个组件的上下左右对齐:
android:layout_alignBottom
android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
设置组件位于布局管理器的哪个位置:
android:layout_centerHorizontal,水平居中
anrodi:layout_centerInparent,布局管理器中间
anrodi:layout_centerVertical,垂直居中
将放入其中的组件按水平或垂直方向排列:垂直/水平布局管理器。
android:orientation="vertical" //垂直,每一行只能放置一个组件
android:orientation="horizontal" //水平,每一列只能放置一个组件
//超出屏幕边缘的的组件不再显示
LinearLayout标记
属性:
android:orientation
android:gravity,控制组件位置,可以使用多个参数,如使组件靠右下角对齐,则属性值"right|bottom",使用竖线进行分割。
android:layout_weight,控制组件分配剩余空间的权重。注意:是在占有自身长宽的前提下,按权重去分配剩余空间。
android:layout_margin,本元素离上下左右间的距离
android:layout_marginStart,本元素离开始的位置的距离
android:layout_marginEnd,本元素离结束位置的距离
为每个放入其中的组件创建空白区域,按照前后顺序层叠放置。
FrameLayout标记
属性:
android:foreground,设置前景图像
android:foregroundGravity,设置前景图像的位置
前景图像:始终位于前面的图像,其他图像无法将其覆盖。
以行列的形式来管理放入其中的UI组件的。
添加表格行:使用TableRow标记,每添加一个TableRow标记就增加一行。而TableRow标记本身为容器,可在其中添加其他组件,在TableRow中每添加一个组件,这个组件就占一列,添加多个组件,这一行就包含多列,在表格布局管理器中无表格列的标记,列由组件个数来确定。
在表格布局管理器中,列序号从0开始。
属性:
android:collapseColumns,设置某列被隐藏,属性值为所在列序号。若要同时隐藏多个列,用逗号分隔开。
android:stretchColumns,允许某列被拉伸,属性值为所在列序号。若要同时允许拉伸多个列,用逗号分隔开。
android:shrinkColumns,允许某列被收缩,属性值为所在列序号。若要同时允许收缩多个列,用逗号分隔开。
在表格布局管理器中可以不使用TableRow标记,而是直接向TableLayout增加组件,每添加一个组件就增加一行。
改变表格行的位置, TableRow android:paddingTop="200dp"等形式修改。
拓展<EditText>为标记框组件,属性:
android:layout_width
android:layout_height
android:hint,输入提示信息
屏幕被虚拟细线划分成行列单元格,每个单元格放一个组件。
表格布局管理器和网格布局管理器的比较:
表格布局管理器可以跨列显示,当一行占满后,超出容器的组件将不会显示。
网格布局管理器可以跨列、跨行,当一行占满后,超出容器的组件将自动换行
GridLayout来标记
属性:
android:colunmnCount,设置网格最大列数。
android:orientation,设置没设定行列时的排列方式。
android:rowCount,设置网格的最大行数。
提供了另外一个内部类,提供XML属性,可控制各个子组件的分布,GridLayout.LayoutParams,
属性:
android:layout_column,指定子组件位于网格第几列
android:layout_columnSpan,指定子组件横向跨几列
android;layout_columnWeight,指定子组件在水平方向的权重,即分配水平剩余空间的比例。、
android:layout_gravity,指定子组件以什么方式占据网格空间
android:layout_row,指定子组件位于网格第几行
android:layout_rowSpan,指定子组件纵向跨几行
android;layout_rowWeight,指定子组件在垂直方向的权重
嵌套原则: