Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕上的适应性具有很大的作用。这里简要介绍Android的Layout和研究一下它的实现。

Android有Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。

放入Layout中进行排布的View的XML属性:

1.几种Layout中Item所共有的XML属性:

  • (1)layout_width
  • (2)layout_height

注: (1)和(2)用来确定放入Layout中的View的宽度和高度:它们的可能取值为fill_parent,wrap_content或者固定的像素值。

  • (3)layout_marginLeft         --->paddingLeft
  • (4)layout_marginTop         --->paddingTop
  • (5)layout_marginRight       --->paddingRight
  • (6)layout_marginBottom    --->paddingBottom
  • (补)layout_margin              --->padding

 注:(3)(4)(5)(6)是放入Layout中的View期望它能够和Layout的边界或者其他View之间能够相距一段距离。

  • (7)layout_gravity

注:(7)用来确定View在Layout中的停靠位置。

FrameLayout是最简单的Layout,就只具有这些属性。

LinearLayout还会有:

  • (8)layout_weight

注: (8)用于在LinearLayout中把所有子View排布之后的剩余空间按照它们的layout_weight分配给各个拥有这个属性的View。

TableLayout的行TableRow是一个横向的(horizontal)的LinearLayout

RelativeLayout有16个align相关的XML属性:

  • (9 )layout_alignParentBottom    当前控件低端与父控件的低端对齐(重合)
  • (10)layout_alignParentLeft        当前控件左端与父控件的左端对齐(重合)
  • (11)layout_alignParentRight      当前控件右端与父控件的右端对齐(重合)
  • (12)layout_alignParentTop        当前控件上端与父控件的上端对齐(重合)
  • (13)layout_centerHorizontal      当前控件位于父控件的横向中间位置(水平方向上的中间)
  • (14)layout_centerInParent        当前控件位于父控件的纵横向中间位置(垂直方向上的中间)
  • (15)layout_centerVertical          当前控件位于父控件的纵向中间位置(平面上的正中间)
  • (16)layout_above             使当前控件位于给出id控件的上方
  • (17)layout_below             使当前控件位于给出id控件的下方
  • (18)layout_toLeftOf          使当前控件位于给出id控件的左侧
  • (19)layout_toRightOf        使当前控件位于给出id控件的右侧
  • (20)layout_alignBottom     使当前控件与给出id控件的底部部重合(注意可用和给出id控件来对齐)
  • (21)layout_alignLeft          使当前控件与给出id控件的左边重合
  • (22)layout_alignRight        使当前控件与给出id控件的右边重合
  • (23)layout_alignTop          使当前控件与给出id控件的顶部重合
  • (24)layout_alignBaseline    使当前控件的BaseLine与给出id控件t的BaseLine重合,这个主要用于Label或者其他包含文本的widgets。

 注:(9)到(24)用来确定RelativeLayout中的View相对于Layout或者Layout中的其他View的位置。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

根据Android的文档,Android会对Layou和View嵌套组成的这棵树进行2次遍历,一次是measure调用,用来确定Layout或者View的大小;一次是layout调用,用来确定Layout或者view的位置。当然后来我自己的山寨实现把这2次调用合并到了一起。那就是Layout在排布之前都对自己进行measure一次,然后对View递归调用Layout方法。这样子的大小肯定是确定了的。然后用确定了的大小来使用gravity或者align属性来定位,使用margin来调整位置。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

补充:

1.android:paddingLeft与android:layout_marginLeft的区别:

padding margin都是边距的含义,关键问题得明白是什么相对什么的边距.
      padding是控件的内容相对控件的边缘的边距.
      layout_margin是控件边缘相对父空间的边距.

2.android gravity和layout_gravity区别

  android:gravity 属性是对该view 内容的限定.比如一个button 上面的text.  你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个.
      android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设置.

这样就解释了,有什么我们弄个最外布局,然后里面包了几个布局,如果要使这几个布局都靠底,就可以在最外布局的属性里设置androi:gravity="botton"  因为gravity是对里面的内容起作用.

转 http://www.cnblogs.com/playing/archive/2011/04/07/2008620.html

Android Layout XML属性相关推荐

  1. Android--应用开发3(Android layout XML属性)

    Android layout XML属性 转载:http://www.cnblogs.com/playing/archive/2011/04/07/2008620.html Layout对于迅速的搭建 ...

  2. Android layout布局属性、标签属性总结大全

    RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal        水平居中 android:layout_centerVe ...

  3. Android自定义XML属性以及遇到的命名空间的问题

    转载请注明出处:http://www.cnblogs.com/kross/p/3458068.html 最近在做一些UI,很蠢很蠢的重复写了很多代码,比如一个自定义的UI Tab,由一个ImageVi ...

  4. Android常见XML属性解析

    常见XML属性解析 属性 描述 android:id android:id的设置,通常有三种方式,详见下文 android:layout_width 控件宽度 android:layout_heigh ...

  5. android 自定义xml属性

    Android 自定义组件 Android 提供了非常精致的和非常强大的组件化模型,能够更加方便的构建UI,这些UI组件都是基于基本的layout类:View 和 ViewGroup. 部分能够用的w ...

  6. android shape.xml 属性详解

    转载源:http://blog.csdn.net/harvic880925/article/details/41850723 一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标 ...

  7. convert android layout xml,详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 ${fq.content} ${fq.time} 2.XML网页效果图 3.Android代码 1.布局文件 xmlns:tools="http://schemas.an ...

  8. android 动画xml属性总结

    XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 JavaCode中 AlphaAnimat ...

  9. android menu xml 属性,Android中Menu类型及常见属性说明

    Android系统里面有3种类型的菜单:options menu,context menu,sub menu. 一.options menu 按Menu键就会显示,用于当前的Activity. 它包括 ...

最新文章

  1. 【ACM】杭电OJ 2018
  2. 【GIF动画+完整可运行源代码】C++实现 归并排序——十大经典排序算法之五
  3. ES6学习笔记六(Iterator和for..of)
  4. 自定义ant中table表格的展开图标 修改ant-vue-design中嵌套表格table的expandIcon自定义图标
  5. 美国三大股指周五收高 费城半导体指数逆势微跌0.33%
  6. SAP License:税-你知道多少?
  7. 叮当:一个开源的树莓派中文智能音箱项目
  8. 002-一般处理程序(HttpHandler)
  9. UGUI小技巧之Text随文本内容自动变化大小
  10. 机器人运动学与动力学
  11. 春晚红包互动:中国云计算的成长史
  12. html怎么偏左居中,word文档偏左怎么调到中间
  13. log4j2-rce-cve-2021-44228 漏洞复现
  14. 通俗的解释云计算 公有云 私有云 混合云
  15. OTL、OCL、BTL电路的区别及其判断方法
  16. MySQL--数据模型
  17. Oracle 12.2 新特性:在线PDB数据库克隆(Pluggable Hot Clone)
  18. MFC Tab 控件使用
  19. 呆呆木的《愚人码头》
  20. centos php5-curl,Centos5 下 安装php的 curl 扩展

热门文章

  1. Spring中的Bean配置
  2. push_back模式工作
  3. _过程_函数_触发器_游标
  4. PHP清除HTML代码、空格、回车换行符的函数
  5. PG: Setting up streaming log replication (Hot Standby )
  6. Java面试题详解二:java中的关键字
  7. 比较nio大体上优于io的方面
  8. Salesforce即将推出Einstein人工智能CRM平台
  9. 如何在python3环境下的Django中使用MySQL数据库
  10. 2017安防市场新趋势:硬件免费 服务收费