在android中应用的界面是以xml来组织的,这一点和wpf相似,通过配置xml文件我们可以灵活的构建出你自己想要的界面。

 

而在所有的xml界面文件中,根节点必须是布局,即先有布局,然后在布局中组织控件或嵌套布局,android中的布局有5种,熟悉各种布局的使用对我们以后开发中更好的组织界面大有益处,以下简单介绍。

 

tablelayout

表格布局,就是类似我们在网页中以表格来组织控件的布局。以n行n列的形式排列出相应的控件。

 

复制代码

 1  <tablelayout

 2         android:layout_width=”wrap_content”

 3         android:layout_height=”wrap_content”

 4         android:layout_alignleft=”@+id/textview1″

 5         android:layout_centerhorizontal=”true”

 6         android:layout_centervertical=”true” >

 7 

 8         <tablerow

 9             android:id=”@+id/tablerow1″

10             android:layout_width=”wrap_content”

11             android:layout_height=”wrap_content” >

12 

13             <button

14                 android:layout_width=”wrap_content”

15                 android:layout_height=”wrap_content”

16                 android:text=”1行1列” />

17 

18             <button

19                 android:layout_width=”wrap_content”

20                 android:layout_height=”wrap_content”

21                 android:text=”1行2列” />

22         </tablerow>

23 

24         <tablerow

25             android:id=”@+id/tablerow2″

26             android:layout_width=”wrap_content”

27             android:layout_height=”wrap_content” >

28 

29             <button

30                 android:layout_width=”wrap_content”

31                 android:layout_height=”wrap_content”

32                 android:text=”2行1列” />

33 

34             <button

35                 android:layout_width=”wrap_content”

36                 android:layout_height=”wrap_content”

37                 android:text=”2行2列” />

38         </tablerow>

39 

40         <tablerow

41             android:id=”@+id/tablerow3″

42             android:layout_width=”wrap_content”

43             android:layout_height=”wrap_content” >

44 

45             <button

46                 android:layout_width=”wrap_content”

47                 android:layout_height=”wrap_content”

48                 android:text=”3行1列” />

49 

50             <button

51                 android:layout_width=”wrap_content”

52                 android:layout_height=”wrap_content”

53                 android:text=”3行2列” />

54         </tablerow>

55     </tablelayout>

复制代码

 

 

linelayout

线性布局,比较简单,就是以水平或垂直的方式一行一个或一列一个的形式摆放控件。

 

复制代码

 1   <linearlayout

 2         android:layout_width=”fill_parent”

 3         android:layout_height=”fill_parent”

 4         android:orientation=”vertical” >//水平或垂直

 5 

 6         <button

 7             android:layout_width=”fill_parent”

 8             android:layout_height=”wrap_content”

 9             android:text=”1行” />

10 

11         <button

12             android:layout_width=”fill_parent”

13             android:layout_height=”wrap_content”

14             android:text=”2行” />

15 

16         <button

17             android:layout_width=”fill_parent”

18             android:layout_height=”wrap_content”

19             android:text=”3行” />

20     </linearlayout>

复制代码

 

 

relativelayout

相对布局,最为灵活得分一种布局,用于组织一些复杂界面,在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below,  android:layout_above, android:layout_centervertical等。注意在指定位置关系时,引用的id必须在引用之前,先被定义,否则将出现异常。

 

复制代码

 1  <relativelayout

 2         android:layout_width=”fill_parent”

 3         android:layout_height=”fill_parent”

 4         android:orientation=”vertical” >

 5 

 6         <button

 7             android:id=”@+id/text_01″

 8             android:layout_width=”50dp”

 9             android:layout_height=”50dp”

10             android:layout_alignparentbottom=”true”

11             android:gravity=”center”

12             android:text=”1″ />

13 

14         <button

15             android:id=”@+id/text_02″

16             android:layout_width=”50dp”

17             android:layout_height=”50dp”

18             android:layout_above=”@id/text_01″//相对布局中的特有属性,xx之上/之下/之左/之右等

19             android:layout_centerhorizontal=”true”

20             android:gravity=”center”

21             android:text=”2″ />

22 

23         <button

24             android:id=”@+id/text_03″

25             android:layout_width=”50dp”

26             android:layout_height=”50dp”

27             android:layout_above=”@id/text_01″

28             android:layout_toleftof=”@id/text_02″//相对布局中的特有属性,在xx的左边

29             android:gravity=”center”

30             android:text=”3″ />

31     </relativelayout>

复制代码

 

 

absolutelayout

绝对布局,在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置,一经设置变不能改变位置,适用一些不经常变化的控件或界面。

 

复制代码

 1 <absolutelayout

 2         android:layout_width=”fill_parent”

 3         android:layout_height=”fill_parent”

 4         android:orientation=”vertical” >

 5 

 6         <button

 7             android:layout_width=”50dp”

 8             android:layout_height=”50dp”

 9             android:layout_x=”50dp”

10             android:layout_y=”50dp”

11             android:background=”#999999″

12             android:gravity=”center”

13             android:text=”1″ />

14 

15         <button

16             android:layout_width=”50dp”

17             android:layout_height=”50dp”

18             android:layout_x=”90dp”

19             android:layout_y=”90dp”

20             android:background=”#ff654321″

21             android:gravity=”center”

22             android:text=”2″ />

23 

24         <button

25             android:layout_width=”50dp”

26             android:layout_height=”50dp”

27             android:layout_x=”125dp”

28             android:layout_y=”125dp”

29             android:background=”#fffedcba”

30             android:gravity=”center”

31             android:text=”3″ />

32     </absolutelayout>

复制代码

 

 

framelayout

 帧布局,网上说的有些别扭,我自己理解就类似css中的z-index,可以实现遮罩,即有层的效果。注意:所有的帧默认都是从屏幕左上角开始绘制,然后按照控件的声明顺序,依次叠加,层级逐渐升高。 

 

复制代码

 1 <framelayout

 2         android:layout_width=”fill_parent”

 3         android:layout_height=”fill_parent”

 4         android:orientation=”vertical” >

 5 

 6         <textview

 7             android:layout_width=”fill_parent”

 8             android:layout_height=”fill_parent”

 9             android:background=”#999999″

10             android:gravity=”center”

11             android:text=”1″ />

12 

13         <textview

14             android:layout_width=”200dp”

15             android:layout_height=”100dp”

16             android:background=”#ff654321″

17             android:gravity=”center”

18             android:text=”2″ />

19 

20         <textview

21             android:layout_width=”50dp”

22             android:layout_height=”50dp”

23             android:background=”#fffedcba”

24             android:gravity=”center”

25             android:text=”3″ />

26     </framelayout>