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);

显示效果如下:

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

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: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);

显示效果如下:

第0行一个按钮aaaaaa

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

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

第3行也是一个按钮eeeeee

主要属性:

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

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

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

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

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

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

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>

显示效果如下:

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

主要属性:

android:columnCount 设置GridLayout的列数

android:rowCount设置GridLayou的行数

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

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

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

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

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

时间: 06-25

android菜鸟学习笔记7----android布局(二)的相关文章

android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访问的IP都是10.0.2.2,如果在apache虚拟主机配置文件中配置了多个虚拟主机,那么将默认解析为对第一个虚拟主机的请求,所以,在调试android应用时,应该将对应的服务端所配置的那个虚拟主机放在配置文件中的第一个虚拟主机的位置.否则就会出现请求的文件不存在等的错误. 服务端返回JSON数据及

android菜鸟学习笔记6----android布局(一)

Android应用的UI组件都是继承自View类,View类表示的就是一个空白的矩形区域.常用的组件如TextView.Button.EditText等都直接或间接继承自View. 此外,View还有一个重要的子类ViewGroup,该类可以用来包含多个View组件,本身也可以当做一个View组件被其他的ViewGroup所包含,由此,可以构建出非常复杂的UI界面. 常用的布局管理器如FrameLayout.LinearLayout.RelativeLayout等都直接继承自ViewGroup.

android菜鸟学习笔记22----ContentProvider(二)ContentObserver的简单使用

现在有这样一个应用A通过ContentProvider提供自己的数据给其他应用,应用B通过ContentResolver获取应用A中提供的数据,并将其展示在ListView中,而应用C通过ContentResolver修改应用A中的数据,或者添加新的数据.现在的问题是应用C修改A中数据后,应用B的ListView中显示的还是历史数据…… 具体程序如下: ContentProvider和插入数据的应用分别复用上一篇中的两个应用,然后新建一个应用,用于获取ContentProvider中的数据,并在

android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用

1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 该类中有几个比较常用的方法: getLastKnownLocation(String provider)用于根据传入的provider

android菜鸟学习笔记8----Activity(二)

关于Activity的生命周期: 下面是Activity整个生命周期中,状态发生变化时所回调的方法,它们对应着Activity完整的生命过程. void  onCreate(Bundle savedInstanceState):Activity被创建时回调 void  onStart()  :在onCreate()或者onRestart()之后被调用,即Activity第一次创建或者从不可见变为可见状态时调用. void  onResume()  :恢复到活动状态时回到,在onStart()之后

android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结

常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在一个浮动于应用之上的View中显示信息,显示一定的时间间隔后自动消失,不可获得焦点. 最简单的用法就是之前的学习中一直使用的:通过一个静态的makeText()方法返回一个Toast对象,然后调用show()方法. 如: 布局文件添加一个Button: 1 <Button 2 3 android:i

android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据

主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: URL url = new URL(http://10.0.2.2/index.php); openConnection()方法返回一个对指定url的资源的连接.返回类型是URLConnection,但是,由于这里我们一般用的是http协议,所以返回的实际是HttpURLConnection对象,故一

android菜鸟学习笔记27----Fragment的简单使用

1.Fragment的生命周期: 简单在新建一个MyFragment继承自Fragment,重写各个生命周期回调方法,各个方法中直接输出标识相关函数被调用的信息. 重写MainActivity的各个生命周期回调方法,同样输出标识信息. MyFragment.java: 1 public class MyFragment extends Fragment { 2 3 @Override 4 5 public void onActivityCreated(Bundle savedInstanceSt

android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图

1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 4)点击右上角的API控制台,没有登录的话会先跳转到登录页面,登录成功之后就进入应用控制台了: 5)点击创建应用: 应用类型选择Android SDK,注意下面的安全码,格式是数字签名+应用包名,中间用分号分隔.数字签名的获得: Eclipse中window->Preferences->Andr