Android中的布局分为六种,分别是相对布局、线性布局、表格布局、网格布局、帧布局、绝对布局,良好的布局设计对UI界面至关重要,下面先来看看先相对布局。

相对布局(RelativeLayout):

在Eclipse中开发Android程序时,默认采用的就是相对布局。相对布局通常有两种形式,一种是相对于容器而言的,一种是相对于控件而言的,为了能准确定位布局中的控件,相对布局提供了很多属性。

android:layout_centerHrizontal 水平居中

android:layout_centerVertical 垂直居中

android:layout_centerInparent 相对于父元素完全居中

android:layout_alignParentBottom 贴紧父元素的下边缘

android:layout_alignParentLeft 贴紧父元素的左边缘

android:layout_alignParentRight 贴紧父元素的右边缘

android:layout_alignParentTop 贴紧父元素的上边缘

android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

android:layout_below 在某元素的下方

android:layout_above 在某元素的的上方

android:layout_toLeftOf 在某元素的左边

android:layout_toRightOf 在某元素的右边

android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

android:layout_marginBottom 离某元素底边缘的距离

android:layout_marginLeft 离某元素左边缘的距离

android:layout_marginRight 离某元素右边缘的距离

android:layout_marginTop 离某元素上边缘的距离

介绍的这些布局属性,我们经常会用到,下面来看看一个布局界面图感受数形结合感受一下:

线性布局(LinearLayout):

线性布局是Android中较为常用的布局方式,它使用标签表示。线性布局主要有两种形式,一种是水平线性布局,一种是垂直线性布局。

表格布局(TableLayout):

在表格布局TableLayout中,行数由TableRow对象控制的,即布局中有多少TableRow对象,就有多少行。每个TableRow中可以放置多个组件。列数由最宽的单元格决定,假如第一个TableRow有两个控件,第二个TableRow有三个控件,那这个TableLayout就有三列。在控件中通过android:layout_column属性指定具体的列数,该属性的值从“0”开始,表示第一列。下面看一个表格布局:

布局中有一个三行三列的表格,也就是有三个TableRow对象。下面看一下表格布局对应的代码:

android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"android:text="Button1" />

android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="1"android:text="Button2" />

android:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="1"android:text="Button3" />

android:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="1"android:text="Button4" />

android:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="2"android:text="Button5" />

网格布局(GirdLayout):

网格布局是Android4.0新增的布局,它实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发。网格布局用一组无限细的直线将绘图区域分成行、列和单元,并指定控件的显示区域和控件在该区域的显示方式,如图所示:

网格布局中的控件可以很整齐的排列,并且可以控制每个控件所占的行数和列数。下面看一下网格布局对应的代码:

android:layout_column="3"android:text="/" />

android:layout_gravity="fill"android:layout_rowSpan="3"android:text="+" />

android:layout_columnSpan="2"android:layout_gravity="fill"android:text="0" />

android:layout_columnSpan="3"android:layout_gravity="fill"android:text="=" />

上述代码中,可以看到有很多个Button,个别的Button按钮中包含一些属性,如android:layout_column表示该按钮在第几列,android:layout_rowSpan表示该控件占用几行,android:layout_columnSpan表示该控件占用几列。

在这里要特别注意的是:由于GridLayout是Android4.0之后有的新功能,如果要在项目中使用这种布局,需要把SDK的最低版本指定为Android4.0(API14)以上,所以我们需要配置好SDK版本:

android:minSdkVersion="14"android:targetSdkVersion="17" />

帧布局(FrameLayout):

帧布局是Android布局中最简单的一种,帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。采用帧布局方式设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示,且会透明显示之前控件的文本,如图所示:

从图中可以看出,界面中添加了3个Button控件,Button1是最先添加的大按钮,Button2是接着添加的较小按钮,Button3是最后添加的小按钮,这三个控件叠加显示在屏幕的左上角。

下面看一下帧布局对应的代码,具体如下:

android:id="@+id/button1"android:layout_width="294dp"android:layout_height="294dp"android:text="Button1" />

android:id="@+id/button2"android:layout_width="218dp"android:layout_height="214dp"android:text="Button2" />

android:id="@+id/button3"android:layout_width="156dp"android:layout_height="143dp"android:text="Button3" />

绝对布局(AbsoluteLayout):

绝对布局需要通过指定x、y坐标来控制每一个组件的位置,放入该布局的组件需要通过android:layout_x和android:layout_y两个属性指定其准确的坐标值,并显示在屏幕上,布局如图所示:

从图我们就可以看出,组件是以屏幕左上角为坐标原点,将Button1的坐标设置为(50,50),Button2的坐标设置为(200,150),根据这个坐标精确定位组件在屏幕中的位置,相对应的代码如下:

android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="50dp"android:layout_y="50dp"android:text="Button1" />

android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="200dp"android:layout_y="150dp"android:text="Button2" />

上述代码中,Button控件的android:layout_x属性表示该控件在X坐标的第50dp像素上,android:layout_y属性表示控件在Y坐标的第50dp象素上,Button2也是通过这两个属性设置的控件位置。

而我们需要注意的是,理论上绝对布局可以完成任何的布局设计,且灵活性很大,但是实际的工程应用中不提倡使用这种布局。因为使用这种布局不但需要精确计算每个组件的大小,而且当应用程序运行在不用屏幕的手机上产生的效果也不相同,因此,一般不推荐使用绝对布局。

原文:http://www.cnblogs.com/caidupingblogs/p/5532036.html

Android中相对布局是,Android之相对布局相关推荐

  1. Android中软键盘弹出时关于布局的问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  2. Android中软键盘弹出可能遮挡布局

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  3. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...

  4. android中的add方法,Android中Fragment怎么addView?

    慕勒3428872 Fragment是Android honeycomb 3.0新增的概念,在Android--Fragment介绍.AndroidFragment使用.Android Fragmen ...

  5. android中bmob云存储,Android中的Bmob移动后端云服务器功能

    PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服 ...

  6. android中shape资源定义,Android可绘制对象资源之shape和layer-list使用

    Code4Android.jpg 前言 文章中内容多来自谷歌官方文档详戳,一些示例代码详戳GitHub,不喜请轻喷. 可绘制对象资源 可绘制对象资源是一般概念,是指可在屏幕上绘制的图形,以及可以使用 ...

  7. android中的progressbar,解析android中ProgressBar的用法

    范例说明Android的Widget,有许多是为了与User交互而特别设计的,但也有部分是作为程序提示.显示程序运行状态的Widget.现在介绍的范例,与前一章介绍过的ProgressDialog对话 ...

  8. Android中设置显示文本,Android文本显示控件-TextView属性详解

    android:autoLink //设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web /email/phone/map/all) andr ...

  9. android中怎么网络判断,Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...

  10. android中edittext设置密码格式,Android 自定义EditText(带清理、密码可见、不可见)...

    实际开发中经常会遇到输入框,各种不同的需求,在一般情况下,清除内容,以及密码可见与不可见基本很常见,那么不废话直接上代码! 在res\values\attrs.xml中 .java import an ...

最新文章

  1. LeetCode--024--两两交换链表中的节点(java)
  2. WebSphere通过corba调Tuxedo问题(2)
  3. 电脑知识:电脑无法开机解决方案,赶紧收藏吧!
  4. linux 一句话备忘
  5. C#实现实时监控文件目录下的变化
  6. 产品列表页分类筛选、排序的算法实现(PHP)
  7. C#图片处理之:色彩调整
  8. cad导出pdf_“又”一款免费的CAD批量导出PDF、DWF、PLT神兵利器
  9. cholesky分解java代码_cholesky分解
  10. 霍尔传感器的工作原理、分类及应用
  11. 图像处理及深度学习开源数据集大全(四万字呕心沥血整理)
  12. Python - 怎么将一个数字拆分成多个随机数字
  13. Excel导入数据库(vue+py)py部分
  14. Android 自定义写字板控件实现用图片做橡皮擦实现擦除功能
  15. NOI 2021 游记题解总结
  16. C++ std::string::find()函数(在字符串中查找内容)
  17. error 系统错误 错误码10007_在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!...
  18. 【Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整的实现方案 | 源码资源 )
  19. 确定账号登录和密码确认
  20. 全国各城市疫情达峰进度条感染高峰时间表最新

热门文章

  1. 赛博空间:涵义、组成和特征
  2. windows10安装Android studio
  3. ESP32C3 移植ST7735 LVGL
  4. 微商水印相机邀请码8uic07
  5. 微商发朋友圈有何技巧?
  6. 复合材料目标体单站RCS
  7. [手游屌丝研究] 手游IP市场调查:授权金似北京房价【一】
  8. 看不懂!苏宁控股“卖身”淘宝,“盲盒第一股”市值破千亿,超过苏宁易购
  9. 安川5系7系伺服 电路 驱动器原理图
  10. 梳理学习Kotlin,Function的用法