android菜鸟学习笔记7----android布局(二)

3.FrameLayout:帧布局

如同Flash或者photoshop中图层的概念,在上面的图层遮盖下面的图层,没被遮到的地方仍然显示出来。

右击res/layout,然后在弹出的菜单中选择new,然后选择Android Xml File,要新建FrameLayout布局文件,就选择FrameLayout作为其根节点即可。文件名为frame_layout.xml。

代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>

 2 

 3 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

 4 

 5     android:layout_width="match_parent"

 6 

 7     android:layout_height="match_parent" >

 8 

 9     <ImageView

10 

11         android:src="@drawable/bg"

12 

13         android:layout_gravity="center"

14 

15         android:layout_width="wrap_content"

16 

17         android:layout_height="wrap_content"/>

18 

19     <ImageView

20 

21         android:src="@drawable/hero"

22 

23         android:layout_width="wrap_content"

24 

25         android:layout_gravity="center"

26 

27         android:layout_height="wrap_content"/>

28 

29 </FrameLayout>

 

依次放置两个ImageView用于显示两张图片,第一张为背景图片,第二张为一个人物图片。

修改FirstActivity中setContentView(R.layout.frame_layout);

显示效果如下:

 android菜鸟学习笔记7----android布局(二)

先添加的控件位于下面,后添加的控件位于上面。

4.AbsoluteLayout:绝对布局

根据绝对坐标位置进行布局,不灵活,故而很少使用。

eclipse中也提示:AbsoluteLayout is deprecated,即不建议使用绝对布局。

新建一个layout文件,名为absolute_layout.xml,代码入下:

 1 <?xml version="1.0" encoding="utf-8"?>

 2 

 3 <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"

 4 

 5     android:layout_width="match_parent"

 6 

 7     android:layout_height="match_parent" >

 8 

 9     <Button

10 

11         android:layout_width="wrap_content"

12 

13         android:layout_height="wrap_content"

14 

15         android:layout_x="100dp"

16 

17         android:layout_y="100dp"

18 

19         android:text="aaaaaa"

20 

21         />

22 

23 </AbsoluteLayout>

 

修改FirstActivity中代码:setContentView(R.layout.absolute_layout);

显示如下:

 android菜鸟学习笔记7----android布局(二)

属性:

android:layout_x 指定控件在父布局的x轴坐标

android:layout_y      指定控件在父布局的y轴坐标

5.TableLayout:表格布局

需要配合TableRow进行使用,也不是太常用。

在TableLayout中每加入一个TableRow子节点,就表示在表格中加入了一行,之后在TableRow中每加入一个控件,就表示加入了一列。注意TableRow单元行里的单元格的宽度小于默认的宽度时就不起作用,其默认是fill_parent,高度可以自定义大小。

如果直接在TableLayout中添加控件,那么该控件将会占用一行。

新建一个layout布局文件,名为table_layout.xml,代码如下:

  1 <?xml version="1.0" encoding="utf-8"?>

  2 

  3 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

  4 

  5     android:layout_width="match_parent"

  6 

  7     android:layout_height="match_parent"

  8 

  9     >

 10 

 11     <Button

 12 

 13         android:layout_width="wrap_content"

 14 

 15         android:layout_height="wrap_content"

 16 

 17         android:text="aaaaaa"

 18 

 19         />

 20 

 21     <TableRow >

 22 

 23         <Button

 24 

 25         android:layout_width="wrap_content"

 26 

 27         android:layout_height="wrap_content"

 28 

 29         android:text="bbbbbb"

 30 

 31         />

 32 

 33     <Button

 34 

 35         android:layout_width="wrap_content"

 36 

 37         android:layout_height="wrap_content"

 38 

 39         android:text="cccccc"

 40 

 41         />

 42 

 43      <Button

 44 

 45         android:layout_width="wrap_content"

 46 

 47         android:layout_height="wrap_content"

 48 

 49         android:text="bbbbbb"

 50 

 51         />

 52 

 53     <Button

 54 

 55         android:layout_width="wrap_content"

 56 

 57         android:layout_height="wrap_content"

 58 

 59         android:text="cccccc"

 60 

 61         />

 62 

 63      <Button

 64 

 65         android:layout_width="wrap_content"

 66 

 67         android:layout_height="wrap_content"

 68 

 69         android:text="bbbbbb"

 70 

 71         />

 72 

 73     <Button

 74 

 75         android:layout_width="wrap_content"

 76 

 77         android:layout_height="wrap_content"

 78 

 79         android:text="cccccc"

 80 

 81         />

 82 

 83     </TableRow>

 84 

 85    <TableRow >

 86 

 87         <Button

 88 

 89         android:layout_width="wrap_content"

 90 

 91         android:layout_height="wrap_content"

 92 

 93         android:text="dddddd"

 94 

 95         />

 96 

 97     </TableRow>

 98 

 99     <Button

100 

101         android:layout_width="wrap_content"

102 

103         android:layout_height="wrap_content"

104 

105         android:text="eeeeee"

106 

107         />

108 

109 </TableLayout>

 

修改setContentView(R.layout.table_layout);

显示效果如下:

 android菜鸟学习笔记7----android布局(二)

第0行一个按钮aaaaaa

第1行6个按钮,但是父控件宽度有限,只显示了5个

第2行一个TableRow,里面加了一个按钮dddddd

第3行也是一个按钮eeeeee

主要属性:

android:shrinkColumns         设置收缩的列,其值为要收缩的列的索引,从0开始,多个时用逗号分隔。

如:android:shrinkColumns="0,2",表示第0和第2列收缩,显示效果如下:

 android菜鸟学习笔记7----android布局(二)

可以看出没有放在TableRow中的行没有被收缩。

android:stretchColumns        设置拉伸的列,其值为要收缩的列的索引,从0开始,多个时用逗号分隔。如上显示中第1行有6个按钮,父容器宽度不够用,此时拉伸任何一列都不会有效果。若第1行只有两个按钮,此时,设置android:stretchColumns="1",则会把第1列拉伸,充满父容器剩下的空间。显示效果如下:

 android菜鸟学习笔记7----android布局(二)

android:collapseColumns       设置要隐藏的列,这里的隐藏于visibility设置为gone效果相同的。隐藏之后不占用父容器的空间。

如:android:collapseColumns="1,3,5",则第一行6个按钮,只剩下3个bbbbbb

 android菜鸟学习笔记7----android布局(二)

6.GridLayout:网格布局

Android4.0中新增的布局管理器。因此,在android4.0之后的版本才可以直接使用。

新建项目设置最小SDK为14,其他也要高于14。

新建一个layout文件,名为grid_layout.xml,代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>

 2 

 3 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"

 4 

 5     android:layout_width="match_parent"

 6 

 7     android:layout_height="match_parent"

 8 

 9     android:columnCount="5"

10 

11     android:rowCount="4">

12 

13     <Button

14 

15         android:layout_row="0"

16 

17         android:text="aaaaaa"

18 

19         android:layout_width="wrap_content"

20 

21         android:layout_height="wrap_content"/>

22 

23     <Button

24 

25         android:layout_row="1"

26 

27         android:layout_column="0"

28 

29         android:text="bbbbbb"

30 

31         android:layout_width="wrap_content"

32 

33         android:layout_height="wrap_content"/>

34 

35     <Button

36 

37         android:layout_row="2"

38 

39         android:layout_column="2"

40 

41         android:text="cccccc"

42 

43         android:layout_width="wrap_content"

44 

45         android:layout_height="wrap_content"/>

46 

47     <Button

48 

49         android:layout_row="3"

50 

51         android:layout_column="1"

52 

53         android:text="dddddd"

54 

55         android:layout_width="wrap_content"

56 

57         android:layout_height="wrap_content"/>

58 

59 </GridLayout>

 

显示效果如下:

 android菜鸟学习笔记7----android布局(二)

整个布局被分为4行5列。

主要属性:

android:columnCount 设置GridLayout的列数

android:rowCount设置GridLayou的行数

每个添加到GridLayout中的子控件都可以设置如下属性:

android:layout_row  设置该元素所在行,从0开始

android:layout_column  设置该元素所在列,从0开始

android:layout_rowSpan  设置该元素所跨的行数

android:layout_columnSpan  设置该元素所跨的列数。

你可能感兴趣的:(Android布局)