相对布局:
见名知意,相对布局就是组件间的布局,与线性布局的区别是,线性布局是控制整个组件间的垂直或者水平的排列方式,线性布局只能调整子组件相对于父组件的位置,它调整不了同一级子组件之间的位置关系。也就是说线性布局不能调整同级组件之间的关系。而相对布局可以调整同级组件之间的位置关系(当然相对布局不能调整组件的排列方式(垂直、水平))。总的来说只要是调整同级组件之间的位置关系,都需要用到相对布局。
相对布局的属性:
第一类:属性值为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
Margin:设置组件与父容器(通常是布局)的边距
android:layout_margin: 指定控件的四周的外部留出一定的边距
android:layout_marginLeft: 指定控件的左边的外部留出一定的边距
android:layout_marginTop: 指定控件的上边的外部留出一定的边距
android:layout_marginRight: 指定控件的右边的外部留出一定的边距
android:layout_marginBottom: 指定控件的下边的外部留出一定的边距
Padding:设置组件内部元素间的边距(可以理解为填充)
android:padding :指定控件的四周的内部留出一定的边距
android:paddingLeft: 指定控件的左边的内部留出一定的边距
android:paddingTop: 指定控件的上边的内部留出一定的边距
android:paddingRight: 指定控件的右边的内部留出一定的边距
android:paddingBottom: 指定控件的下边的内部留出一定的边距
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/ws1"
android:layout_width="96dp"
android:layout_height="100dp"
android:background="#b2dfdb"
android:text="第一块"/>
<TextView
android:id="@+id/ws2"
android:layout_width="96dp"
android:layout_height="100dp"
android:layout_toRightOf ="@id/ws1"
android:background="#80cbc4"
android:text="第二块"/>
<TextView
android:id="@+id/ws3"
android:layout_width="96dp"
android:layout_height="100dp"
android:layout_toRightOf ="@id/ws2"
android:background="#4db6ac"
android:layout_weight="10"
android:text="第三块"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/ws1"
android:layout_width="96dp"
android:layout_height="100dp"
android:background="#b2dfdb"
android:text="第一块"/>
<TextView
android:id="@+id/ws2"
android:layout_width="96dp"
android:layout_height="100dp"
android:layout_marginLeft ="100dp"
android:background="#8BC34A"
android:text="第二块"/>
<TextView
android:id="@+id/ws3"
android:layout_width="96dp"
android:layout_height="100dp"
android:layout_marginLeft ="130dp"
android:background="#FF5722"
android:layout_weight="10"
android:text="第三块"/>
</RelativeLayout>
在使用相对元素的属性值为具体的像素值时需要注意,因为相对的是父元素,本例子中相对的是整个界面的左边,所以第二块和第三块才会有重叠。从这里也可以发现,第三块吧把第二块的遮盖住了(这里的具体原因,目前还未了解,与帧布局有点类似,大胆猜测一下,所有的同级组件之间的布局方式默认方式和帧布局一样,最后得出帧布局只是一种强制默认布局的一种布局或者说andriod解析时按照从上到下解析 下边的布局优先级默认比前面的高会将前面的覆盖)