Android 布局管理器

布局管理器:控制组件是如何摆放的。

5种常用的布局管理器:

  1. RelativeLayout,相对布局管理器
  2. LineraLayout,线性
  3. FrameLayout,帧
  4. TableLayout,表格
  5. GridLayout,网格

一、相对布局管理器

适用于:可以根据组件间的相对位置来摆放时。

属性:
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,指定子组件在垂直方向的权重

六、布局管理器的嵌套

嵌套原则:

  1. 根布局管理器必须包含xmlns属性
  2. 在一个布局文件中,最多只能有一个根布局管理器,如果需要有多个还需要使用一个根布局管理器将他们括起来,而另外的这个根布局管理器才是跟布局管理器。
  3. 不能嵌套太深,嵌套太深会影响性能。

你可能感兴趣的:(android,java,xml)