Activity的布局初步(三)相对布局【RelativeLayout】

 相对布局,在这个容器内的子元素们可以通过彼此之间的位置来相互定位,或者与其父控件容器进行相互定位。注意:不能在 RelativeLayout容器本身的大小和他的子元素之间产生循环依赖,例如,不能给RelativeLayout容器的高设置成为 WRAP_CONTENT属性,而给子元素的高设置成为 ALIGN_PARENT_BOTTOM属性。


  循环依赖理解起来就是,容器本身的WRAP_CONTENT的高度就是根据子元素的高度来设定自身高度,容器依赖于子元素,而子元素的设置是与父控件的底边对齐,子元素又依赖于容器,这就产生了循环依赖,很明显容器的高度都是不固定的,子元素当然无法与容器的底边进行对齐。 

内部类:class RelativeLayout.LayoutParams RelativeLayout相关联的布局信息

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   
    <TextView
        android:id="@+id/relative_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Type here:"/>
   
    <EditText
        android:id="@+id/relative_entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_below="@id/relative_label"/>

    <Button
        android:id="@+id/relative_ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/relative_entry"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dip"
        android:text="OK" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/relative_ok"
        android:layout_alignTop="@id/relative_ok"
        android:text="Cancel" />
</RelativeLayout>

 

xml布局文件基本属性:

android:layout_above ——> 将该控件置于给定ID的控件之上
android:layout_below ——>
将该控件置于给定ID的控件之下
android:layout_toLeftOf ——>
将该控件置于给定ID的控件之左
android:layout_toRightOf ——>
将该控件置于给定ID的控件之右

例:android:layout_above=”@id/XXX”

这组属性的后面跟的都是相对控件的ID,表示的都是相对给定ID控件的上下左右方向位置。

但是上面四个属性并没有设置各个控件之间是否对齐

示例1:

    将控件A放置在控件B上面,则使用android:layout_above属性。控件布局的效果可以有以下两种情况:

    A:控件A与控件B对齐,并且控件A是在控件B的上面

    B:控件A没有与控件B对齐,但是控件A又确实是在控件B的上面

android:layout_alignBaseline ——> 该控件的baseline和给定ID控件的baseline对齐
android:layout_alignBottom ——>
将该控件的底部边缘与给定ID控件的底部边缘对齐
android:layout_alignLeft ——>
将该控件的左边边缘与给定ID控件的左边边缘对齐
android:layout_alignTop ——>
将该控件的顶部边缘与给定ID控件的顶部边缘对齐
android:layout_alignRight ——>
将该控件的右边边缘与给定ID控件的右边边缘对齐
例:android:layout_alignBotton=”@id/XXX”
这组属性的后面跟的都是相对控件的ID,表示的都是控件自身的上下左右边缘与给定ID控件的对应边缘对齐或外对齐。

示例2:

    在示例1的基础上,设置控件A放置在控件B的上面,使用android:layout_above属性,并且控件A的左边边缘与控件B的左边边缘对齐,使用android:layout_alignLeft属性。

 

android:layout_alignParentBottom ——> 如果值为true,则将该控件的底部与父控件的底部对齐
android:layout_alignParentLeft ——>
如果值为true,则将该控件的左边缘与父控件的左边缘对齐
android:layout_alignParentRight ——>
如果值为true,则将该控件的右边缘与父控件的右边缘对齐
android:layout_alignParentTop ——>
如果值为true,则将该控件的顶部与父控件的顶部对齐
例:android:layout_alignParentBottom = true
这组属性的后面跟的都是true或false,如果不指定,默认是false,表示的都是控件自身的上下左右边缘与父控件的对应边缘是否对齐。由于控件是在父控件的内部,所以是内对齐。

 

android:layout_centerHorizontal ——> 如果值为true,则该控件在其父控件范围内水平居中
android:layout_centerInparent ——> 
如果值为true,则该控件在其父控件范围内垂直且水平居中
android:layout_centerVertical ——>
如果值为true,则该控件在其父控件范围内垂直居中
例:android:layout_centerHorizontal = true

这组属性的后面跟的都是true或false,如果不指定,默认是false,表示的都是控件自身相对于父控件范围内的居中情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值