不知道前两期有没有让大家看了有想学习安卓的冲动,我还是会继续努力的,为了自己,也为了别人。
前两期主要介绍了AS下的android开发相关知识,从这一章开始就正式进入android开发了,今天主要介绍一下android中最常用的6大布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局,已经凉了)、GridLayout(网格布局)、TableLayout(表格布局)
一、LinearLayout
上节课在使用TextView和Button的时候,我记得给大家说过layout_width、layout_height这两个属性,这里就不谈了。
线性布局是指布局里面的内容成线性排列,有两种排列方式,横向排列(水平)和纵向排列(竖直),这里有一个属性orientation,有两个选择,vertical和horizontal,他可以改变线性布局的排列方向。

在这个布局里面我有两个TextView控件,现在显示出来的效果就是这个样子。

把他改成horizontal的效果大家可以自己试一试。
其次关于线性布局的另一个属性是weight(权重),这个属性一般设置在LinearLayout里的控件中,(像我这个里面的两个TextView),他的效果也很简单。
在给控件设置了wight之后,LinearLayout会将长或宽填充满,根据子空间的权重自行分配他们的长度或者宽度,(长度还是宽度还要看我们上一个属性orientation)。下面来给大家演示一下:

三个TextView控件,orientation设置为horizontal水平排列。给他们的权重分别设置为1:1:2,现在效果就很明显了,无论控件长短,他们的长度显示始终是1:1:2的形式。
但是大家有没有注意到,我在设置成水平排列时,将width属性全部设置成0dp了?这是因为被设置weight的控件,宽度/长度 应该为控件原本的 宽度/长度+ 父控件剩余的 长度/宽度 * 所占比。所占比就是他们weight设置的比例,=自己的weight/全部weight相加。
垂直的形式大家就可以自己试试,这里就不搞了。下面来介绍一下RelativeLayout。
二、RelativeLayout
RelativeLayout相对于LinearLayout属性更多一些(其实他的属性相当多,而且长得还都差不多-。+),下面我们来介绍一下。
RelativeLayout名为相对布局,顾名思义,是相对于其他控件的意思。 在RelativeLayout中,控件可以通过各种属性来设置自己相对其他控件的位置,来达到自己位置切换的目的。
1.gravity和ignoreGravity
gravity设置了容器自己内的子组件的对齐方式,
而如果ignoreGravity指定了哪个组件,那么那个组件就不会受gravity的影响。上图不解释。

2.alignParent系列属性
这一系列属性是根据父布局来定位,想跟哪对齐就把哪个属性设置成true;
andoid:ayout_alignParentLeft="true",左对齐
android:layout_alignParentRight="true",右对齐,
android:layout_alignParentTop="true",顶端对齐,
android:layout_alignParentBottom="true",底部对齐,
android:layout_alignParentStart="true",起始位置对齐
android:layout_alignParentEnd="true",结束为止对齐。
3.center系列属性
这一系列属性是直接指定组件位于中心。
android:layout_centerInParent="true" ,相对父容器中心对齐,
android:layout_centerHorizontal="true" ,相对父容器水平对齐,
android:layout_centerVertical="true",相对父容器垂直对齐 。
4.根据兄弟组件来定位(这个比较多了,)
android:layout_above="@id/tv",在指定组件的上方(不一定是正上方)
android:layout_below="@id/tv",在指定组件的下方(不一定是正下方)
android:layout_toLeftOf="@id/tv",在指定组件的左侧
android:layout_toRightOf="@id/tv",在指定组件的右侧
android:layout_alignTop="@id/tv",跟指定组件上边界对齐,
android:layout_alignBottom="@id/tv",跟指定组件下边界对齐,
android:layout_alignLeft="@id/tv",跟指定组件左边界对齐,
android:layout_alignRight="@id/tv",跟指定组件右边界对齐。
下面是一个简单的例子,其他的就大家自己去敲代码吧。

今天就将这两个布局,有什么错误的地方希望大家留言,我好改正。
网友评论