Android Layout之三:RalativeLayout(一)

来源:互联网 发布:用软件装系统 编辑:程序博客网 时间:2024/06/06 00:11

我们从RalativeLayout可以知道,该布局的父子Container中所有的Widgets之间的位置都是相对的。你可以把Widget A放在Widget的左下方,或者放在Widget的底边并和Container的底边之间。它允许为Container或者widget指定其相对于其他widgets或者父Container的位置。Container或者widgets是按顺序排列的,如果第一个Container或者widget在屏幕的中央,那么相对于其的其他Container和widgets将以屏幕的中央来排列。如果使用XML的Layout文件来定义,被引用的Container或者widgets必须被定义。

在XML的layout文件中,我们就能够引用同一文件的Widgets,并且可以标识其他Widgets的相对位置。

标识一个Widgets在其Container中的位置,我们有下面的属性参数可以用,这些参数的值可以使true或者false:

1).android:layout_alignParentTop:表示widget的顶部和Container的顶部重合。

2).android:layout_alignParentBottom:表示widget的底部和Container的底部重合。

3).android:layout_alignParentLeft:表示widget的左边和Container的左边重合。

4).android:layout_alignParentRight:表示widget的右边和Container的右边重合。

5).android:layout_centerHorizontal:表示widget处于Container水平方向上的中间。

6).android:layout_centerVertical:表示widget处于Container垂直方向上的中间。

7).android:layout_centerInParent:表示widget处于Container平面上的正中间。

标识同一个Container中的不同的widgets之间的相对位置时,可有用如下的属性参数,参数值是其他widgets的应用。相对位置上的widgets的引用的设定如下:首先必须给所有的被引用的widgets赋予标示符,通过android:id的属性,格式如@+id/widget1,然后在其他widget引用的时候使用同样的标示符,格式如@id/widget1,例:如果widget A标识为@+id/widget A,则widget B在其属性里面通过@id/widget A引用widget A。

1).android:layout_above:表示该widget必须位于参数值标识的widget的上方。

2).android:layout_below:表示该widget必须位于参数值标识的widget的下方。

3).android:layout_toLeftOf:表示该widget必须位于参数值标识的widget的左方。

4).android:layout_toLeftOf:表示该widget必须位于参数值标识的widget的右方。

5).android:layout_alignTop:表示该widget的顶部必须参数值标识的widget的顶部重合。

6).android:layout_alignBottom:表示该widget的底部必须参数值标识的widget的底部重合。

7).android:layout_alignLeft:表示该widget的左边必须参数值标识的widget的左边重合。

8).android:layout_alignRight:表示该widget的右边必须参数值标识的widget的右边重合。

9).android:layout_alignBaseLine:表示该widget的BaseLine必须参数值标识的widget的BaseLine重合。这个主要用于Label或者其他包含文本的widgets。

在我们引用widget时不能引用该文件中尚未定义的widget。

具体的示例如下:

  1: xml version="1.0" encoding="utf-8"?> 
  2: 
  3: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4: 
  5: android:layout_width="fill_parent" 
  6: 
  7: android:layout_height="wrap_content" 
  8: 
  9: android:padding="5px" 
 10: 
 11: > 
 12: 
 13: <TextView android:id="@+id/label" 
 14: 
 15: android:layout_width="wrap_content" 
 16: 
 17: android:layout_height="wrap_content" 
 18: 
 19: android:text="URL:" 
 20: 
 21: android:paddingTop="15px"/> 
 22: 
 23: <EditText android:id="@+id/entry" 
 24: 
 25: android:layout_width="fill_parent" 
 26: 
 27: android:layout_height="wrap_content" 
 28: 
 29: android:layout_toRightOf="@id/label" 
 30: 
 31: android:layout_alignBaseline="@id/label" 
 32: 
 33: /> 
 34: 
 35: <Button android:id="@+id/ok" 
 36: 
 37: android:layout_width="wrap_content" 
 38: 
 39: android:layout_height="wrap_content" 
 40: 
 41: android:layout_below="@id/entry" 
 42: 
 43: android:layout_alignRight="@id/entry" 
 44: 
 45: android:text="OK" 
 46: 
 47: />   
 48: 
 49: <Button android:id="@+id/cancel" 
 50: 
 51: android:layout_width="wrap_content" 
 52: 
 53: android:layout_height="wrap_content" 
 54: 
 55: android:layout_toLeftOf="@id/ok" 
 56: 
 57: android:layout_alignTop="@id/ok" 
 58: 
 59: android:text="cancel" 
 60: 
 61: />   
 62: 
 63: RelativeLayout> 
 64: 
 65: 

RelativeLayout关系布局:

在form中的用法:"@[+][package:]type:name"   (@id/viewName)

在主题模式form中的用法:"?[package:][type:]name".(还没见过相关的例子)

android:layout_above VS android:layout_below:

设定当前view和相关的view在垂直方向上的关系,above是上相关view的上面,below是在相关view的下面,above让当前view的下面界和相关view的上边界对齐。相反below则是将当前view和相关view的上边界对齐。

在form中的用法:"@[+][package:]type:name"   (@id/viewName)

在主题模式form中的用法:"?[package:][type:]name".(还没见过相关的例子)

android:layout_alignBaseline

大概相当于水平中心线对齐。

android:layout_alignBottom

android:layout_alignLeft

android:layout_alignRight

android:layout_alignTop

以上这些同理。

android:layout_alignParentBottom

android:layout_alignParentLeft

android:layout_alignParentRight

android:layout_alignParentTop

android:layout_centerHorizontal

android:layout_centerInParentc

android:layout_centerVertical

以上四项是指在父容器中的位置。

android:layout_alignWithParentIfMissing

If set to true, the parent will be used as the anchor when the anchorcannot be be found for layout_toLeftOf, layout_toRightOf, etc.

如果设为true,当找不到toLeftOf或toRightOf的view的时候,父容器将成为锚点,以父容器做为布局的依据

0 0
原创粉丝点击