前言:android
Android应用的UI是由层级的视图对象组成的。视图层次起始于一个布局容器。每一个视图表明着屏幕上的一块组成。每一个视图经过属性来设定自身在屏幕上显现的形态。能够说Android的视图就是由布局容器、容器中的子视图、视图的各类属性串联而成。今天在B哥的指导下 咱们对组成视图的各个因素一 一加以探究。布局
1、Android中视图的表现形式:学习
Android使用XML布局与Java代码共同定义视图(用户界面)。你可使用Java代码来制定全部的视图布局。但在绝大多数状况下是使用XML。使用XML能最大限度的利用Android的自动资源选择特性。在此咱们先只介绍以XML形式定义出来的视图测试
Android中的每一个界面,都会由不少元素组成。好比一个图片、一段文字等等。咱们将这些元素按照咱们的意愿,而且在Android系统承认的规则下,排布出咱们想要的界面。而提供这些规则的。会是一个容器,这种容器咱们一般称之为一个布局。组成页面的各个元素,咱们都要将之放入到布局容器中,而有时布局自己也是页面组成的一部分,它也是页面的组成元素(这里指的是布局间的嵌套)。Android提供了5种布局容器供咱们使用,每一种布局都有本身的规则。咱们将界面元素放入某种布局以后。在该布局中的全部元素都要遵循该布局所设定的规则(线性、相对、表格等等),在后面的内容里咱们将一 一加以介绍。字体
这里咱们还要澄清一个概念,这就是咱们所提到的元素。你们在这里能够把元素理解成界面的一个部分,即界面是一个一个元素组成的。元素能够是一个布局、一个系统控件、还能够是一个咱们自定义的控件。spa
若是一个元素(这时通常状况下 这个元素会是一个布局)能够含有、容纳,其余元素。那么咱们就能够称之为一个父元素,而被它含有的元素,则称之为它的子元素。一个页面元素。能够同时既是父元素也是子元素(它被别的元素包含、同时它本身也含有另外的元素),这种状况通常出如今布局的嵌套中。页面上的每一个元素,都会经过本身的属性来控制本身和子元素的位置、形态等等。因此咱们接下来要给你们引入属性的概念。翻译
2、Android中的视图属性:3d
为了控制每一个元素在页面上的展现。Android提供了种类繁多的元素属性。这些属性决定了每一个元素的展示形态。不一样的属性设置、组合。造就了元素的变幻无穷。而各个元素又组成了咱们的界面。 视图属性--->组成Android视图基因组的最小单位。在XML中进行属性的设置必需要遵循如下形式:Android:属性名 = “属性值”;xml
3、重要应用属性对象
这里咱们选择几种全部元素都会遇到且很容易混淆的属性加以介绍。
² 高和宽
每视图的高和宽 经过layout_width和layout_height两个属性设定,能够是精确值(XXXdp),能够是象征值match_parent\fill_parent(充满父元素)、wrap_content(占用足够用的父元素空间);通常来讲match_parent和wrap_content要比精确值灵活得多,其优势主要体如今象征值能够适配任何屏幕尺寸。
注意:match_parent和fill_parent都是充满父元素。在Android 2.2开始fill_parent更名为match_parent。fill_parent仍容许向下兼容,若是考虑版本兼容问题,建议使用fill_parent。
² padding和margin
二者都是距离属性,区别在于margin定义的是元素与元素之间的距离,padding指的是元素里的内部内容与元素边界的距离。margin对外,padding对内。
² gravity与layout_gravity
layout_gravity表示的是子元素在父元素中的位置,在这里必定要注意,是位置而不是距离,layout_gravity的值是上下左右的象征值而不是以尺寸单位定义的精确值。换言之是指子元素在父元素中的顶部、底部、中部等等。而gravity是以父元素为视角。来定义本身的子元素,在自身中的位置。两者定义的都是子元素在父元素中的位置,区别就是layout_gravity是子元素须要定义的属性,gravity是父元素须要定义的属性。例如要将一个子元素放置在其父元素的顶部,咱们有两种方法能够选择,一是定义子元素的layout_gravity属性设置为top;二是将父元素的gravity属性设置为top;
在开发中更倾向于使用layout_gravity属性,以子元素为视角只控制自身,这样更加灵活。由于若是要设置父元素的gravity属性,那么其全部子元素都会根据gravity的设定,所有放置在其内部的指定位置;
建议:根据实际开发的经验来看,要想灵活的控制视图的位置,咱们须要先以gravity与layout_gravity设置其方位,再以padding和margin gravity调整、微调具体距离,来达到咱们想要的效果;
² Android布局的尺寸单位
Android绝大多数状况下采用了一种特殊的尺寸单位。即dp(density-independent),翻译做 与密度无关像素 简称(写做)dp。1dp=1/160英寸,dp这个单位的意义在于逻辑长度单位随着密度变化,对应的像素数量也变化,即你能够根据看到的实际大小,在应用中设置对应的dp值,而使得不一样的设备上看起来同样大,从而达到屏幕适配的效果。
Android中使用的尺寸单位有不少,例如 px、sp、pt等等。可是使用dp做为尺寸单位是Android处理不一样屏幕尺寸和分辨率的一种方式,这是其余尺寸单位所不具有的。初学者只须要明白指定UI元素大小的时候你应该使用dp做为单位。
Android常见长度单位对照表:
单位名称 |
名称解释 |
px |
是屏幕的像素点 |
in |
英寸, 屏幕的物理尺寸, 每英寸等于 2.54 厘米。 |
mm |
毫米 |
pt |
磅,1/72 英寸 |
dp |
逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并无直接的变化比例。 |
sp |
与dp相似,可是能够根据用户的字体大小首选项进行缩放 |
4、Android中的布局
² FrameLayout
FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,全部的子元素都不能被放置到指定的位置,换言之这个容器(布局)没有能够精确放置子元素到指定位置的方法,它会将它的子元素通通放于这块自身区域的左上角(能够经过gravity属性来移动子元素的位置象征值),而且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和所有遮挡,因此FrameLayout是一个以层次划分操做的布局,在XML中具体表现是,先定义(下文代码中的a1)的子元素会被放置在布局的最底层,接下来是a2->a4,以用户的视角来讲,他会在界面上最早看到是与他“距离最近”的a4。
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/a1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/g"
/>
<TextView
android:id="@+id/a2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="s1"
android:background="#FF0000"
android:textColor="#000000"
android:textSize="18dip"
/>
<ImageView
android:id="@+id/a3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:layout_gravity="bottom"
/>
<TextView
android:id="@+id/a4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="s2"
android:layout_gravity="bottom"
/>
</FrameLayout>
² TableLayout
TableLayout是展现表格格式数据的Layout(容器),以行和列的形式对其内部的子元素进行管理,每一行为一个TableRow对象,或任意一种的子元素。当一行为一个TableRow元素时,可在TableRow下继续添加子元素,默认状况下,每一个子元素占据一列。当一行为一个非TableRow元素时,该元素本身独占一行。以下图:
TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或其余页面元素),就有多少行。
TableLayout的列数等于含有最多子元素的TableRow的列数。如一个 TableLayout中有4个TableRow,第一个TableRow含2个子元素,第二个TableRow含3个,第三个TableRow含4个,那么该TableLayout的列数为4. 如上图所示 该TableLayout的列数为4 由于最上面的TableRow含有4个子元素,而底下的TableRow含有3个子元素.
TableLayout的重要属性应用。
一、TableLayout的子元素不能指定宽度即layout_width属性是无效的,具体在咱们的图中就是S一、S二、S3,此三个元素是不能被设定layout_width属性的,这个是由TableLayout来处理并设置的,可是他们的子元素是能够随意设定layout_width的。
二、全局属性(列属性),此类属性是TableLayout自己根据须要,设定的属性。
stretchColumns:设置可伸展的列。该列能够向行方向(横向)伸展,最多可占据一整行。
shrinkColumns:设置可收缩的列。当该列子元素的内容太多,已经挤满所在行,那么该子元素的内容将往列方(纵向)向显示。
collapseColumns :设置要隐藏的列。
说明:列能够同时具有stretchColumns及shrinkColumns属性,若此,那么当该列的内容N多时,将“多行”显示其内容。(这里不是真正的多行,而是系统根据须要自动调节该行的layout_height)
举例:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:collapseColumns="2"
android:shrinkColumns="1"
android:stretchColumns="0" >
<TableRow>(第0行)
<Button android:text="第0行,第0列" />(A0)
<Button android:text="第0行,第1列" />(A1)
<Button android:text="第0行,第2列" />(A2)
</TableRow>
<TableRow>(第1行)
<TextView android:text="第1行,第0列 能够被隐藏 " />(B0)
<TextView android:text="第1行,第1列 能够很深" />(B1)
</TableRow>
</TableLayout>
在TableLayout中设置了android:collapseColumns="2",第2列能够被隐藏,因此第0行,第2列被隐藏了。
stretchColumns="0" 第0列能够被伸展因此当第1行,第0列中内容较多时,自动横向延伸了
android:shrinkColumns="1"第1列能够纵向延伸,因此当第1行,第1列内容太多,已经挤满所在行,那么该子元素的内容将往列方(纵向)向显示
三、单元格属性(列属性)此类属性是TableLayout的子元素根据本身须要,设定的属性
layout_column:指定该元素在第几列显示
layout_span:指定该元素占据的列数(未指定时,为1)
举例:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dip" >
<TableRow>(第0行)
<Button android:text="第0行,第0列" />
<Button android:text="第0行,第1列" >
<Button android:text="第0行,第2列" />
</TableRow>
<TableRow> (第1行)
<TextView android:text="A1" android:layout_column="1"/>
</TableRow>
<TableRow> (第2行)
<TextView
android:text="A2跨到第2列,不信你看!"
android:layout_column="1"
android:layout_span="2"
/>
</TableRow>
</TableLayout>
第1行 设置了android:layout_column="1",因此A1在第1列开始显示
第2行 设置了android:layout_column="1" 和android:layout_span="2"因此A2在第1列开始显示并占用了两列。
综上所述TableLayout虽然在Android布局中,不是使用率最高的,可是在以表格形式展现数据的应用中仍是蛮好用的,相对于FrameLayout其灵活性已大大增长。不过TableLayout的针对性仍是从某种意义上来讲限制了它的使用率,那么Android有没有既灵活、通用性又强的布局呢,答案是确定的,下面咱们就来介绍LinearLayout和RelativeLayout。
² LinearLayout
LinearLayout线性布局,顾名思义,这个容器是把他的子元素按照垂直或者水平的方向,单向排列,在整个Android的布局中 LinearLayout是运用最多的布局之一,可是它也是最好理解的。在LinearLayout中 依靠orientation属性来设置其子元素的排列方式(水平或垂直)。以后咱们就能够“傻瓜”式的在LinearLayout排列咱们须要展现的页面元素了。
纵向展现:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >(排列方向设定)
<TextView android:text="元素1" />(子元素1)
<TextView android:text="元素2" />(子元素2)
<TextView android:text="元素3" />(子元素3)
</LinearLayout>
你们能够看到 在LinearLayout中 android:orientation="vertical" 将布局的排列方式指定为vertical垂直,其子元素就以定义的前后顺序,在页面上垂直排列上来。
反之以下;
将orientation属性值 设置为horizontal 子元素横向排列
android:orientation="horizontal"
LinearLayout中的weight
Weight是LinearLayout特有的一种属性,经过设置layout_weight属性,能够将其子元素沿LinearLayout设置的方向按比例展现。
举例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView (s1)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:layout_weight="1(比重为1)
/>
<TextView (s2)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="2"/>(比重为2)
<TextView (s3)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="3"(比重为3)
/>
</LinearLayout>
一、orientation="horizontal" 整个布局横向排布
二、s1-> s3 的比重分别为一、二、3,因此在视图上三个子元素在横向上按1:2:3显示
在此介绍一下 比重的计算方法 在此实例中LinearLayout有三个子元素,比重值分别设置为一、二、3,因此整个页面就会被平均分红1+2+3=6份 而后按照各个子元素设定weight值的多少,来占用整个页面6份中的多少
三、为何说weight属性是将其子元素沿LinearLayout设置的方向按比例展现
咱们看一下下面的实例。
在上一段代码的基础上 整个布局为横向排布,咱们为每个子元素的高设定一个精确值
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView (s1)
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="1"
android:layout_weight="1(比重为1)
/>
<TextView (s2)
android:layout_width="wrap_content"
android:layout_height="30dP"
android:text="2"
android:layout_weight="2"/>(比重为2)
<TextView (s3)
android:layout_width="wrap_content"
android:layout_height="20dp"
android:text="3"
android:layout_weight="3"(比重为3)
/>
</LinearLayout>
因此weight只在LinearLayout设置的方向上会生效 在另外一方向上是失效的。(例如,在水平方向按weight设定值显示,那么在竖直方向上height属性是不受影响的,反之在竖直方向上按weight设定值显示,那么水平方向width属性不受影响)。
那么你们肯能会问了 那么我在LinearLayout设置的方向设置子元素的长或宽,同时又设定了weight,此时weight会不会失效呢,咱们继续往下看
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView (s1)
android:layout_width="50dp"
android:text="1"
android:layout_weight="1(比重为1)
/>
<TextView (s2)
android:layout_width="30dp"
android:text="2"
android:layout_weight="2"/>(比重为2)
<TextView (s3)
android:layout_width="20dp"
android:text="3"
android:layout_weight="3"(比重为3)
/>
</LinearLayout>
咱们看到在布局设定的方向上weight属性是覆盖了对应的height或width。可是这个是否是就是结论呢,B哥能够负责的告诉你们 不必定是。咱们继续看代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView (s1)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="11111111111111"
android:layout_weight="1(比重为1)
/>
<TextView (s2)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="2"/>(比重为2)
<TextView (s3)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="3"(比重为3)
/>
</LinearLayout>
设定好weight值后,看一下页面效果
这下你们迷惑了吧,为何weight会失效呢?
那是由于:
1布局自己的排布方向是horizontal,与其方向一致的属性layout_width = wrap_content
2子元素内容超出其所占比例空间所能承受的“面积”,在这个时候weight会失效。
只有在这两个条件都知足的前提下weight会失效。那么怎么解决这个问题呢,android也给出了答案:将layout_width设置为0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView (s1)
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="11111111111111"
android:layout_weight="1(比重为1)
/>
<TextView (s2)
android:layout_width="0dp "
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="2"/>(比重为2)
<TextView (s3)
android:layout_width="0dp "
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="3"(比重为3)
/>
</LinearLayout>
总结:
1:经过设置layout_weight属性,能够将其子元素沿LinearLayout设置的方向按比例展现。
2:weight只在LinearLayout设置的方向上会生效 在另外一方向上是失效的。
3:在必定条件下(上文已经介绍),weight会受到width或height的干扰,若是使用weight,把对应的width或height设为0dp,这样一来视图的大小就会只授权值的控制而不会受到干扰。
4:在不设置weight属性的时候,该属性默认为0。
介绍完LinearLayout 你们是否是以为 它比以前给你们介绍的全部布局都要灵活了呢。可是在android应用界面的开发中咱们每每须要一种更灵活的布局方式,为此RelativeLayout呼之欲出。
² RelativeLayout
RelativeLayout相对布局 是比LinearLayout线性布局更加灵活的一种布局。布局中元素的位置是按照相对位置来计算的,后一个元素在什么位置依赖于前一个元素的基本位置,换言之RelativeLayout 容许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最经常使用的布局方式之一。它灵活性大不少,固然属性也多,操做难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多作些测试。
RelativeLayout的操做全在于布局内部每一个元素经过自身属性的设定组合来在RelativeLayout中展现一个咱们想要的界面。因此在RelativeLayout中特有的属性,也是全部布局中最多的,咱们给RelativeLayout的各个子元素,设定各类属性。来控制他们在布局中的位置。从而达到咱们想要的效果。 下面咱们就来介绍一下RelativeLayout中常见的属性们。
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素彻底居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 若是对应的兄弟元素找不到的话就以父元素作参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
咱们仍是经过例子来学习以上属性
咱们在一个RelativeLayout中分别放置s1-s9 ,9个子元素。下面咱们就来讲说这9个子元素是如何别放置到他们的父容器,一个RelativeLayout中去的。
一、s1:咱们根据截图能够看出s1是被放置在RelativeLayout的左上角的。Android布局中没有哪一个属性是能够直接将元素放置在布局的哪一个角上的。因此咱们要曲线救国,两步走。
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
即s1 即在父元素的顶部,又在父元素的左边,其效果就是s1出如今父元素的左上角
同理:
S2右上角:
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
S3左下角:
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
S4右下角:
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
好如今问题出来了,若是某个页面元素我既想放置在一个RelativeLayout边角位置,又想和边界有一些距离,这种效果怎么达到。通常这种状况下咱们会启用一开始咱们介绍过的margin属性。
还拿s1举例
咱们在android:layout_alignParentTop="true" android:layout_alignParentLeft="true"的基础上加上android:layout_marginTop="10dp"android:layout_marginLeft="15dp"
来微调元素与边界之间的距离从而达到咱们想要的效果。
说完四边 咱们来讲说怎么让一个元素被放置在RelativeLayout的中间
咱们来看S5
android:layout_centerInParent="true" 相对于父元素彻底居中。
相对布局的相对指的是 后一个元素在什么位置依赖于前一个元素的基本位置。那么S5以后的S6的位置就要相对于S5说了
android:layout_above="@id/s5"
android:layout_marginBottom="15dp",
在s5的上面,而且距离底部元素s5 15个dp 这里要着重注意一下,layout_above是在XXX的上面,marginBottom是距离底部的元素多少距离。一目了然,位置的属性above等是以目标元素为视角。距离属性margin是以自身为视角。理解了这层关系,你对RelativeLayout的理解会更加深入。
同理:
S7:android:layout_below="@id/s5"
android:layout_marginTop="15dp"
S8:android:layout_toLeftOf="@id/s5"
android:layout_marginRight="15dp"
S9:android:layout_toRightOf="@id/s5"
android:layout_marginLeft="15dp"
接下来咱们还有两个比较重要的属性要介绍这就是android:layout_centerHrizontal和android:layout_centerVertical 其实也很好理解。在这里给你们一个公式。
layout_centerInparent= layout_centerHrizontal+ layout_centerVertical
layout_centerInparent指的是在父元素的正中心
layout_centerHrizontal是指在父元素的水平中心,在竖直方向上,默认为layout_alignParentTop
layout_centerVertical
是指在父元素的竖直中心,水平方向上,默认为layout_alignParentLeft
以上介绍了RelativeLayout的经常使用属性,你们在应用时每每会遇到这么一个问题,那是属性间有冲突的现象。固然具体问题要具体分析,这里给你们一个方向,那就是相对于父元素操做的属性alignParentXXX和centerInparent。。。等等的属性,其优先级每每要大于对同级元素操做的属性如咱们介绍的第二类属性属性值必须为id的引用名“@id/id-name”。
在B哥多年的经验下 给你们一个操做RelativeLayout的大致思路,先考虑目标为父元素的属性设定,在细化到对兄弟元素的位置关系的属性设定。先设定大致位置,再用距离进行微调。对齐要用一个方向的目标元素,切忌不可循环依赖。
AbsoluteLayout:
相对于RelativeLayout,android还提供了一个布局名为 绝对布局AbsoluteLayout,可是在B哥教导下,给你们说一下这个鸡肋的绝对布局。该布局是不会写代码的人专用的,直接在ADT下拉组件到合适位置便可;很坑爹的说!绝对布局是直接经过X,Y坐标来控制组件在布局中的位置,这是它惟一的特色。说真的,这布局如今真的不多用,由于手机的屏幕大小与分辨率都千差万别,极可能你在虚拟机上是居中的,而后一换你手机跑就错位了,所以使用AbouluteLayout并非一个明智的选择。
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"" >
<TextView
android:id="@+id/txt1"
android:text="绝对布局的使用"
android:layout_x="80px"
android:layout_y="80px"/>
<TextView
android:text="2.3以后废除了"
android:layout_x="120px"
android:layout_y="120px"/>
<ImageView
android:layout_x="80px"
android:layout_y="180px"
android:src="@drawable/ic_launcher"/>
</AbsoluteLayout>
这里惟一要说明的 在绝对布局中起始点0,0为左上角,其坐标值依次增长到布局中的右下角,直至将坐标点“推出”屏幕。
以上图代码为例txt1的layout_x和layout_y均为80px,也就是说 它在布局中的位置是以左上角为基准,向右平移80px,再向下竖移80px为本身的出现位置