参考资料:https://developer.android.com/guide/topics/ui/declaring-layout.html
一、相对布局(RelativeLayout)
(1)属性
- 组件默认左对齐、顶部对齐
设置组件在指定组件的右边
android:layout_toRightOf="@id/tv1"
设置在指定组件的下边
android:layout_below="@id/tv1"
设置右对齐父元素
android:layout_alignParentRight="true"
设置与指定组件右对齐
android:layout_alignRight="@id/tv1"
(2)应用场景
(1) 允许指定子View控件彼此之间的关系
二、线性布局(LinearLayout)
(1)属性
① 指定各个节点的排列方向
android:orientation="horizontal" // 水平布局
android:orientation="vertical" // 垂直布局
② 设置右对齐
android:layout_gravity="right"
③ 当水平布局(horizontal)时,只能顶部底部对齐和竖直居中
即:水平布局(horizontal)时, 只能使用center_vertical,不能使用center_horizontal。
只能使用top, bottom,不能left rightTips : 使用 match_parent 时注意不要把其他组件顶出去
④ 权重(按比例分配剩余的空间)
android:layout_height 均设置为 “0dp”(对于垂直布局),
或将每个视图的android:layout_width 均设置为 “0dp”(对于水平布局)
android:layout_weight="1"
(2)应用场景
用于使所有子视图在单个方向(垂直或水平)保持对齐
(1) 按权重进行占据相同的空间量
三、帧布局(FrameLayout)
(1)属性
- 默认组件都是左对齐和顶部对齐,每个组件相当于一个div
可以更改对齐方式
android:layout_gravity="bottom"
- 不能相对于其他组件布局
<TextView
android:layout_width="240dp"
android:layout_height="240dp"
android:background="#FF0000"
android:layout_gravity="center"
/>
(2)应用场景
使用API : Fragment 和 TabHost 必须有帧布局
四、表格布局(TableLayout)
- 每个节点是一行,它的每个子节点是一列
表格布局中的节点可以不设置宽高,因为设置了也无效
- 根节点的子节点宽为匹配父元素,高为包裹内容
- 节点的子节点宽为包裹内容,高为包裹内容
- 以上默认属性无法修改
根节点中可以设置以下属性,表示让第1列拉伸填满屏幕宽度的剩余空间
android:stretchColumns="1"
(2)应用场景
将子视图组织成多行
五、绝对布局(AbsoluteLayout)
直接指定组件的x、y坐标
android:layout_x="144dp" android:layout_y="154dp"