http://www.open-open.com/lib/view/open1390095269414.html

Android 的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、 AbsoluteLayout(绝对布局)和TableLayout(表格布局),09年的时候,我就该总结啊!分享才有意义!下面分别介绍:

LinearLayout(最好少用):
  LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <TextView  android:layout_width="fill_parent" 
           android:layout_height="wrap_content" android:background="#ff000000" 
           android:text="@string/hello"/>
    <LinearLayout android:orientation="horizontal" 
          android:layout_width="fill_parent" android:layout_height="fill_parent">
             <TextView  android:layout_width="fill_parent" 
                   android:layout_height="wrap_content" android:background="#ff654321" 
                   android:layout_weight="1" android:text="1"/>
           <Button  android:layout_width="fill_parent" 
                   android:layout_height="wrap_content" android:background="#fffedcba" 
                   android:layout_weight="2"  />
    </LinearLayout>
</LinearLayout>

FrameLayout(比较少用):
  FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。显示效果如下,第一个TextView被第二个TextView完全遮挡。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" 
           android:background="#ff000000" android:gravity="center" android:text="1"/>
    <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" 
           android:background="#ff654321" android:gravity="center" android:text="2"/>
</FrameLayout>

AbsoluteLayout(最好不用):
  AbsoluteLayout是绝对位置布局,布局很容易花。在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端

RelativeLayout(最好多用):
  RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below, android:layout_above等。子元素就通过这些属性和各自的ID配合指定位置关系。注意在指定位置关系时,引用的ID必须在引用之前,先被定义,否则将出现异常。RelativeLayout里常用的位置属性如下:
    android:layout_toLeftOf —— 该组件位于引用组件的左方
    android:layout_toRightOf —— 该组件位于引用组件的右方
    android:layout_above —— 该组件位于引用组件的上方
    android:layout_below —— 该组件位于引用组件的下方
       android:layout_alignParentLeft —— 该组件是否对齐父组件的左端
       android:layout_alignParentRight —— 该组件是否齐其父组件的右端
       android:layout_alignParentTop —— 该组件是否对齐父组件的顶部
       android:layout_alignParentBottom —— 该组件是否对齐父组件的底部
    android:layout_centerInParent —— 该组件是否相对于父组件居中
    android:layout_centerHorizontal —— 该组件是否横向居中
    android:layout_centerVertical —— 该组件是否垂直居中
RelativeLayout是Android五大布局结构中最灵活的一种布局结构,适合一些复杂界面的布局
RelativeLayout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <Button android:id="@+id/bt1" android:layout_width="50dp" 
         android:layout_height="50dp" android:background="#ffffffff" android:gravity="center" 
         android:layout_alignParentBottom="true" />
    <Button android:id="@+id/bt2" android:layout_width="50dp" 
         android:layout_height="50dp" android:background="#ff654321" android:gravity="center" 
         android:layout_above="@id/bt1" android:layout_centerHorizontal="true" />
    <Button android:id="@+id/bt3" android:layout_width="50dp" 
         android:layout_height="50dp" android:background="#fffedcba" android:gravity="center" 
         android:layout_toLeftOf="@id/bt2" android:layout_above="@id/text_01" />
</RelativeLayout>

TableLayout(少用):
  TableLayout顾名思义,此布局为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。TableRow是LinearLayout的子类,它的android:orientation属性值恒为horizontal,并且它的android:layout_width和android:layout_height属性值恒为MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是横向排列,并且宽高一致的。这样的设计使得每个TableRow里的子元素都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。

padding是控件的内容相对控件的边缘的边距.
margin是控件边缘相对父控件,或者其他控件的边距

Android五大布局详解相关推荐

  1. android布局置顶_[置顶] Android系统五大布局详解Layout

    我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit等 ...

  2. qt布局嵌套_QDockWidget嵌套布局详解-实现Visual Studio布局

    概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口. Qt的嵌套布局由QDockWidget完成,用Qt Creator拖 ...

  3. Android 虚拟分区详解(二) 虚拟分区布局

    文章目录 0. 导读 1. Android 传统 A/B 分区和动态分区布局 2. Android 虚拟分区布局 3. 虚拟分区的思考 2.1 分区只有一套,如何实现 A/B 系统特性? 2.2 部分 ...

  4. Android开发重点难点1:RelativeLayout(相对布局)详解

    前言 啦啦啦~博主又推出了一个新的系列啦~ 之前的Android开发系列主要以完成实验的过程为主,经常会综合许多知识来写,所以难免会有知识点的交杂,给人一种混乱的感觉. 所以博主推出"重点难 ...

  5. android中帧布局效果,布局之FrameLayout(帧布局)详解

    New UI-布局之FrameLayout(帧布局)详解 --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!本节引言:FrameLayout(帧布局)可以说是六大布局中最为简单的一 ...

  6. Android事件流程详解

    Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

  7. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

  8. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

  9. Android开发 GradientDrawable详解

    Android开发 GradientDrawable详解 前言 GradientDrawable类似与Xml布局里的shape,常用在一些自己封装的对话框控件的背景或者其他View中,优势是不需要你在 ...

最新文章

  1. R语言绘制火山图(volcano plot)实战:为差异表达基因(DEGs)添加颜色、基于显著性阈值进行点的颜色美化、为选定基因添加标签
  2. P1516 青蛙的约会 [exgcd]
  3. 数据仓库之电商数仓-- 2、业务数据采集平台
  4. linux找不到mysql服务_linux mysql 找不到 mysql/mysql.h
  5. 信息论基础知识:【信息熵 不确定性】
  6. 做减肥产品微商地推用什么做引流?如何选择转化率较高的地推方式
  7. axure插件安装360浏览器
  8. dubbo反序列化问题 Unable to find class: path
  9. 腾讯视频二面【附常见HR面试问题】
  10. 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统【100010319】
  11. 【性能测试】Jmeter性能测试实战
  12. c语言合并jpg成pdf,JPG在线转换成PDF文件的简单方法
  13. 2021最新python学习视频教程
  14. 构建一个适合stm32mp157系列开发板的嵌入式Linux系统
  15. jmeter——提取内容到文件
  16. Win11播放音频有个小红叉怎么办?
  17. jQuery unload事件
  18. python3项目源代码下载_GitHub 上适合新手的 Python 开源项目
  19. 对国家最新战略“新基建”的解读,一起把握赚钱的机会
  20. Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收 可完成标准和扩展CAN帧YID发送和接收,带配置参数自动保存,定时发送,帧类型选择,文本和十六进制等

热门文章

  1. wifi协议_物联网网关智能家居工业4G路由器通用的物联网WiFi模块 MQTT/TCP协议 Linux嵌入式...
  2. ubuntu中的tftp用法
  3. C语言 sprintf实现
  4. 最大子数组下标java,【算法】最大子数组
  5. 一个软件网络连接异常_你的电脑运转正常吗?这 10 款系统监控软件能告诉你答案...
  6. knime二次开发节点的项目结构
  7. 10_Influxdb+Grafana监控Mysql
  8. 为什么jsp的form表单不能跳转_手把手教你实现SEM投放监控转化--表单类
  9. yolo数据集txt标注转voc数据集xml标注格式
  10. Python编写caffe代码