RelativeLayout中子控件常用属性:
1、相对于父控件,例如:android:layout_alignParentTop=“true”
android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
android:layout_alignParentRight 控件的右部与父控件的右部对齐;
2、相对给定Id控件,例如:android:layout_above=“@id/**”
android:layout_above 控件的底部置于给定ID的控件之上;
android:layout_below 控件的顶部置于给定ID的控件之下;
android:layout_toLeftOf 控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 控件的右边缘与给定ID的右边缘对齐;
3、居中,例如:android:layout_centerInParent=“true”
android:layout_centerHorizontal 水平居中;
android:layout_centerVertical 垂直居中;
android:layout_centerInParent 父控件的中央;
通过上一篇文章,我们显示两个美女,我们针对的学习的对象是 RelativeLayout 这个控件,也就是相对布局这样的一个控件,我们用到了这个控件里面的部分属性,其实这个控件里面的属性是非常非常多的,我们测试一下
所谓的相对父控件就是说,在一个屏幕里面显示两个美女其实有三个Layout,那父控件怎么看呢?
这父亲里面有两个,右面下面的这两个都是最外层的RelativeLayout 的子控件,有两个子控件
对于父控件,我们有
相对于父控件,例如:android:layout_alignParentTop=“true”
android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
android:layout_alignParentRight 控件的右部与父控件的右部对齐;
我们重新copy一个工程
现在我删掉一个美女,不让她和父控件大小对其
,有一个叫做
android:layout_width="wrap_content"
android:layout_height="wrap_content"
因为前两个意思一样,都是填充到父控件那么大
wrap_content:你图片有多大,我就显示多大
现在代码如下
运行一下
发现图片有点大,我们弄小一点(截图然后,命名testpic)
把弄好的名为testpic 图片,放到res 下面的drawable这里
修改一下代码 第12 行
运行一下
默认情况下,他这个子控件,他会从父控件的左上角开始安排
android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
android:layout_alignParentTop="true" true就是确认对其这件事情
这句话写不写进去无所谓,因为她默认就是跟父控件的顶部对齐
运行一下,发现效果是一样的
然后我们修改一下代码
android:layout_alignParentTop="true" 改成 android:layout_alignParentBottom="true"
运行一下,跑到下面来啦,但是他左面还是顶着
如果我想让他处于右下角呢?
加上一句 android:layout_alignParentRight="true"
运行一下
如果想跑到右上角呢?
运行一下
相对于父控件有四种,对于两个控件也是一样的
相对给定Id控件,例如:android:layout_above=“@id/**”
android:layout_above 控件的底部置于给定ID的控件之上;
android:layout_below 控件的顶部置于给定ID的控件之下;
android:layout_toLeftOf 控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 控件的右边缘与给定ID的右边缘对齐;
代码如下
预期结果
那我能不能在她的右面呢?
android:layout_toRightOf="@id/girl1"
预期结果
再试试一个
android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
运行一下
这样的结果是遮盖住了
那如何能看出底部的效果呢?
加一句 android:layout_toRightOf="@id/girl1"
运行一下
但是这个底部好像有点问题
Baseline没有对其
那如果我们让左面的美女和右面的对其,她会不会下拉呢?
android:layout_alignBaseline="@id/girl1"
android:layout_toRightOf="@id/girl1"
这两句话去掉,让她左上角去顶
然后给她来一个id
什么时候用@id ?什么时候用@+id?
你给一个新控件添加id 的时候,这面有一个加号,
你用的时候,用@,没有加号
girl 1的代码,相对于girl 2,所以girl 1的代码放在girl 2的下面
运行一下
看来这个Baseline还是有点问题的
我们把红头发的高度,宽度改一改
把图片改小点,图片太大,效果会被遮盖
运行一下
再修改一下
运行一下
我们再修改一下,
用 android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
运行一下
剩下的就是
居中,例如:android:layout_centerInParent=“true”
android:layout_centerHorizontal 水平居中;
android:layout_centerVertical 垂直居中;
android:layout_centerInParent 父控件的中央;
代码如下
android:layout_centerHorizontal 水平居中;
运行结果
修改一下代码
android:layout_centerVertical 垂直居中;
android:layout_centerVertical="true"
运行结果
再修改一下代码
android:layout_centerInParent 父控件的中央;
运行结果