本节主要介绍的是:以ViewGroup为基类派生的布局管理器

下面显示了android布局管理器的类图:

androidstudio布局管理器概念 android的布局管理器有哪些_android

android应用的图形用户界面具有良好的平台无关性,就是使用布局管理器来管理组件的分布、大小,而不是直接设置组件的位置和大小。

1、LinearLayout类(线性布局):

可以将容器里的组件一个挨一个地排列起来,LinearLayout可以控制各组件的排列方式(横向或者纵向)。

下面显示了LinearLayout支持的XML属性以及相关的方法:

androidstudio布局管理器概念 android的布局管理器有哪些_XML_02

LinearLayout包含的子元素都受LinearLayout.LayoutParams控制,

LinearLayout.LayoutParams子元素支持的常用XML属性及相关方法:

androidstudio布局管理器概念 android的布局管理器有哪些_XML_03

2、TableLayout类(表格布局):

TableLayout继承了LinearLayout,它的本质还是线性布局管理器,TableLayout采用行、列的形式来管理UI组件,TableLayout并不需要明确包含多少行、多少列,而使通过添加TableRow等其他组件来控制表格的行数和列数。

在表格布局中,列的宽度由该列中最宽的那个单元格决定,整个表格的布局宽度则取决于父容器的宽度(默认情况下是占满父容器本身)

在TableLayout中,可以设置单元格如下行为方式:

Shrinkable:某列被设置为Shrinkable,该列的所有单元格的宽度可以被收缩,以保证表格能够适应父容器的宽度。

Stretchable:某列被设置为Stretchable,该列的所有单元格宽度可以被拉伸,保证组件能完全填满表格空余空间。

Collapsed:某列被设置为Collapsed,该列的所有单元格会被隐藏。

TableLayout继承了LinearLayout,它完成可以支持LinearLayout所支持的全部XML属性,除此之外,TableLayout支持如下属性:

androidstudio布局管理器概念 android的布局管理器有哪些_android_04

对于列序号,我们通常从0开始,0代表第一列,1代表第2列,依次下去。。。

3、FrameLayout类(帧布局):

从开始的布局管理器类图可以知道,FrameLayout直接继承于ViewGroup。

FrameLayout为每个加入其中的组件创建一个空白的区域,每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

FrameLayout常用的XML属性及向光方法:

androidstudio布局管理器概念 android的布局管理器有哪些_XM7 FOR ANDROID_05

FrameLayout包含的子元素也受FrameLayout.LayoutParams控制,博客中给出了FrameLayout的对应“霓虹灯效果”的例子。

4、RelativeLayout类(相对布局):

相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的,这种布局方式称为相对布局。

例:A组件的位置是由B组件的位置来决定的,则要求先定义B组件的位置,再定义A组件。

RelativeLayout支持的XML属性如下:

androidstudio布局管理器概念 android的布局管理器有哪些_XML_06

为了控制RelativeLayout布局中子组件的布局分布,RelativeLayout提供了一个内部类:RelativeLayout.LayoutParams,该类提供大量XML属性控制布局分布:

下面是RelativeLayout.LayoutParams设置为true、false的XML属性

androidstudio布局管理器概念 android的布局管理器有哪些_XM7 FOR ANDROID_07

下面是RelativeLayout.LayoutParams设置为其他UI组件ID的属性:

androidstudio布局管理器概念 android的布局管理器有哪些_android_08

androidstudio布局管理器概念 android的布局管理器有哪些_XML_09

除此之外,RelativeLayout.LayoutParams还继承了android.view.ViewGroup.MarginLayoutParams,则RelativeLayout布局容器中每个子组件可以指定为android.view.ViewGroup.MarginLayoutParams所支持的XML属性。

5、GridLayout类(网格布局):

这是android4.0新增的布局管理器,需要在android4.0之后的版本中才可以使用。

GridLayout作用类似于HTML中的table标签,把整个容器划分成rows*columns个网格,每个网格可以放置一个组件,也可以设置一个组件横跨多少列、一个组件纵跨多少行。

下面列出了GridLayout常用的XML属性以及相关的方法:

androidstudio布局管理器概念 android的布局管理器有哪些_XML_10

为了控制GridLayout布局容器中各子组件的布局分布,GridLayout提供了一个内部类:GridLayout.LayoutParams,该类提供了一些XML属性来控制GridLayout布局容器中子组件的布局分布:

androidstudio布局管理器概念 android的布局管理器有哪些_XML_11

6、AbsoluteLayout类(绝对布局):

绝对布局就是空布局,即android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。当使用AbsoluteLayout作通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qqyvL7WyN3G98qxo6yyvL7WyN3G97K71Nm53MDt19PX6bz+tcTOu9bDoaK089Cho6zV4tCptrzSqr+qt6LIy9Sx19S8ur/Y1sahozwvcD4KPHA+yrnTw774ttSyvL7WtcRYTUzK9NDUo7o8L3A+CjxwPmxheW91dF94o7rWuLaouMPX6bz+tcRY1/ix6jwvcD4KPHA+bGF5b3V0X3mjuta4tqi4w9fpvP61xFnX+LHqPC9wPgo8cD5BYnNvbHV0ZUxheW91dLK7ysfSu7j2usPLvMK3o6zS8s6q1MvQ0GFuZHJvaWSzzNDytcTK1rv6x6ey7s3ysfCjrLj31tayzsr9us3Q1MTctryyu82so6xBYnNvbHV0ZUxheW91dLrcxNG85rnLsrvNrMbBxLu089Chus231rHmwsq1xM7KzOKjrMv50tRBYnNvbHV0ZUxheW91dNLRvq25/cqxoaM8YnI+CjwvcD4KPHA+z8LD5r3pydzSu8/CYW5kcm9pZNbQs6PTw7XEvuDA67WlzrujujwvcD4KPHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0409/20140409172435377.jpg" alt="">