android-UI组件(一):布局管理器

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

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


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

1、LinearLayout类(线性布局):

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

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


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

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



2、TableLayout类(表格布局):

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

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

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

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

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

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

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


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


3、FrameLayout类(帧布局):

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

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

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


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


4、RelativeLayout类(相对布局):

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

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

RelativeLayout支持的XML属性如下:


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

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


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




除此之外,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属性以及相关的方法:


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



6、AbsoluteLayout类(绝对布局):

绝对布局就是空布局,即android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。当使用AbsoluteLayout作为布局容器时,布局容器不再管理子组件的位置、大小,这些都要开发人员自己控制。

使用绝对布局的XML属性:

layout_x:指定该组件的X坐标

layout_y:指定该组件的Y坐标

AbsoluteLayout不是一个好思路,因为运行android程序的手机千差万别,各种参数和性能都不同,AbsoluteLayout很难兼顾不同屏幕大小和分辨率的问题,所以AbsoluteLayout已经过时。

下面介绍一下android中常用的距离单位:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值