RelativeLayout:
RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below, android:layout_above等。子元素就通过这些属性和各自的ID配合指定位置关系。注意在指定位置关系时,引用的ID必须在引用之前,先被定义,否则将出现异常。RelativeLayout里常用的位置属性如下:android:layout_toLeftOf —— 该组件位于引用组件的左方 ,android:layout_toRightOf —— 该组件位于引用组件的右方,android:layout_above —— 该组件位于引用组件的上方 ,android:layout_below —— 该组件位于引用组件的下方,android:layout_alignParentLeft —— 该组件是否对齐父组件的左端,android:layout_alignParentRight —— 该组件是否齐其父组件的右端,android:layout_alignParentTop —— 该组件是否对齐父组件的顶部 ,a ndroid:layout_alignParentBottom —— 该组件是否对齐父组件的底部 ,android:layout_centerInParent —— 该组件是否相对于父组件居中 ,android:layout_centerHorizontal —— 该组件是否横向居中 ,android:layout_centerVertical —— 该组件是否垂直居中,RelativeLayout是最灵活的一种布局结构,比较适合一些复杂界面的布局。
LinearLayout:
LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少,都将占据整行空间;如果是水平排列,那么将是一个单行的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。LinearLayout中的子元素属性android:layout_weight用于描述该子元素在剩余空间中占有的大小比例。当一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,布局将两个TextView的宽度均设为wrap_content,一个权重为1,一个权重为2,权重为1的占了三分之一,权重为2的占了三分之二。布局将两个TextView的宽度均设为match_parent,一个权重为1,一个权重为2,权重为1的反而占了三分之二。