.Net码农学Android---五分钟了解布局

在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>

五大布局已经介绍完毕,有些简单,(因为这个布局我觉得确实也没什么好说的,结合配图我觉得已经很能说明问题了)。我在写这个系列之前也说了“我并不想做重复性的工作”,类似这种基础的东西,网上很多人写的比我好也很详细,我只是想把自己在学习过程中认为有必要和大家分享的一些经验和技巧写出来,所以你可以看到我并没有写什么HelloWorld之类的,因为与其把时间花在这种已经泛滥的内容上,倒不如多花时间去贡献一些独有的,或被大家忽略的内容上。

写技术博客真的很费时间,得理顺思路、组织语言、写Demo、截图、排版等等,有时候真羡慕那些可以一周一篇甚至几天一篇得大牛们。最近学的内容和点都比较多,看着大篇凌乱的笔记,一时间都不知道该从哪去写,自己更新的有些慢,不过自己还是会坚持的,一起加油!

.Net码农学Android---五分钟了解布局

时间: 2024-09-27 00:05:29

.Net码农学Android---五分钟了解布局的相关文章

Android五种布局方式——LinearLayout、RelativeLayout、TableLayout....(四)

Android五种布局方式--LinearLayout.RelativeLayout .TableLayout.... Android使用XML声明界面布局 将程序的表现层和控制层分离 修改用户界面时,无需更改程序的源代码 可视化工具设计用户界面 Android五种布局方式 LinearLayout线性布局 AbsoluteLayout坐标布局 RelativeLayout相对布局 FrameLayout帧布局 TableLayout表格布局 GridLayout 1.LinearLayout线

Android五种布局说明

AbsoluteLayout---->是一个按照绝对坐标定义的布局,由于使用绝对坐标去定位控件,因此要实现自适应界面时,应尽少使用 AbsoluteLayout . RelativeLayout---->最好在界面设计时 做好布局,尽少程序运行时 做控件布局的更改,因为 RelativeLayout布局里面的属性之间,很容易冲突 FrameLayout---->顾名思义跟帧有关,布局里所有的控件都被放到布局的左上角,并且一层覆盖一层. TableLayout + TableRow----

源码解析Android中View的layout布局过程

Android中的Veiw从内存中到呈现在UI界面上需要依次经历三个阶段:量算 -> 布局 -> 绘图,关于View的量算.布局.绘图的总体机制可参见博文 < Android中View的布局及绘图机制>.量算是布局的基础,如果想了解量算的细节,可参见博文<源码解析Android中View的measure量算过程>.本文将从源码角度解析View的布局layout过程,本文会详细介绍View布局过程中的关键方法,并对源码加上了注释以进行说明. 对View进行布局的目的是计算

[Android]Volley源码分析(五)

前面几篇通过源码分析了Volley是怎样进行请求调度及请求是如何被实际执行的,这篇最后来看下请求结果是如何交付给请求者的(一般是Android的UI主线程). 类图: 请求结果的交付是通过ResponseDelivery接口完成的,它有一个实现类ExecutorDelivery, 主要有postResponse()与postError()两个方法,分别在请求成功或失败时将结果提交给请求发起者. 1. 首先,在NetworkDispatcher的run()方法中,当服务器返回响应并解析完后,会调用

【源码分享下载】每日更新之Android应用源码之仿微信5.2布局

Android应用源码之仿微信5.2布局 支持平台:Android 运行环境:Android 开发语言:Java 下载地址:http://www.devstore.cn/code/info/193.html 源码简介 仿微信5.2布局,本实例默认编码GBK.需要的朋友可以研究一下. 源码运行截图

.Net码农学Android---系统架构和基本概念

至此,你应该已经完成以下前期准备事情: 1.安装完JDK 2.安装完SDK(并在Manager中进行相关版本的更新) 3.相关IDE(如eclipse) 4.安装完ADT 5.安装完AVD(如果你是真机模拟的话也可以不安装) 前期环境搭建基本完成,并按照网上的教程可以运行出HelloWorld,确保可以流程走的通. 所谓会当凌绝顶,一览众山小.我学习新东西时总会从系统或全局的角度对它进行一个总览,这样才能从更高的角度去把握它,而且你对接下来的学习也会有一个系统的认知会让之后的学习更有条理和针对性

Android基础:常用布局和数据存储

1. 相对布局RelativeLayout 特点:相对布局所有组件可以叠加在一起:各个组件的布局是独立的,互不影响:所有组件的默认位置都是在左上角(顶部.左部对齐) 属性 功能描述 android:layout_toRightOf 在指定控件的右边 android:layout_toLeftOf 在指定控件的左边 android:layout_above 在指定控件的上边 android:layout_below 在指定控件的下边 android:layout_alignBaseline 跟指定

(转载) 在服务器上排除问题的头五分钟

在服务器上排除问题的头五分钟 2014/08/07 · IT技术 · 3 评论 · 服务器, 系统管理员 分享到: 94 百度地图在Android中的使用 Android图像处理-打造美图秀秀从它开始 Android属性动画赏析 Android-多平台分享(新浪微博) 本文由 伯乐在线 - 老码农 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:devo.ps.欢迎加入翻译组. 我们团队为上一家公司承担运维.优化和扩展工作的时候,我们碰到了各种不同规模的性能很差的系统和基础设备(大型系统居多,

Android仿微信UI布局视图(圆角布局的实现)

圆角按钮,或布局可以在xml文件中实现,但也可以使用图片直接达到所需的效果,以前版本的微信就使用了这种方法. 实现效果图:    不得不说,这种做法还是比较方便的. 源代码: MainActivity(没写任何代码,效果全在布局文件中实现): package com.android_settings; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity