线性布局
竖直方向
- 左右对齐生效,顶部底部对齐无效
- 水平居中生效,竖直居中无效
例:


水平方向
- 顶部底部对齐生效,左右对齐无效
- 竖直居中生效,水平居中无效
例(orientation改成了"horizontal"):

注:两者不能同时生效,线性布局中的组件是永远不会重叠的。
权重
-
layout_weightSum:把线性布局中剩余空间分成N份。
-
layout_weight:指定当前控件在父元素(线性布局)中占N份。
-
visibility:是控制布局是否显示
值 | 含义 |
---|---|
visible | 显示 |
invisible | 不显示但占空间 |
gone | 隐藏 |
例:


解:第一个文本框的宽度给了20dp,第二个文本框100dp,屏幕剩下的宽度会按照比例(1:1)分配给两个文本框。
注:在项目开发的过程中设置控件宽度搭配权重的时候通常把控件宽度设置为0dp,这样控件没有初始宽度,按比例分配宽度很好计算。
另:
weightSum
属性是可以去掉的,计算结果等于控件的权重和,若weightSum
的值大于控件的值,则会在屏幕上会有部分留白。
例:


相对布局
- 组件可以重叠(没有方向性)
- 所有组件默认位置:左对齐,顶部对齐
属性 | 含义 |
---|---|
layout_toRightOf | 在指定控件的右边 |
layout_toLeftOf | 在指定控件的左边 |
layout_above | 在指定控件的上边 |
layout_below | 在指定控件的下边 |
layout_alignBaseline | 和指定控件水平对齐 |
layout_alignLeft | 和指定控件左对齐 |
layout_alignRight | 和指定控件右对齐 |
layout_alignTop | 和指定控件顶部对齐 |
layout_alignBottom | 和指定控件底部对齐 |
layout_alignParentLeft | 是否和父元素左对齐 |
layout_alignParentRight | 是否和父元素右对齐 |
layout_alignParentTop | 是否和父元素顶部对齐 |
layout_alignParentBottom | 是否和父元素底部对齐 |
layout_centerVertical | 在父元素中水平居中 |
layout_alignParentLeft | 在父元素中垂直居中 |
layout_centerInParent | 在父元素中居中 |
相对父控件
例:


相对指定控件
例:

注:
萧亚轩的代码中既和Mr.Q左对齐,又和它右对齐,导致了萧亚轩的文本框整个被吸长(原本只是包裹内容),也就是说:宽度也是可以相对的
android:layout_alignRight="@+id/jolin"
android:layout_alignLeft="@+id/jolin"

互相搭配即可完成简单相对布局

帧布局
- 组件可以叠加
- 所有组件默认位置:左对齐,顶部对齐
- 布局方式和线性布局一样,但是帧布局没有方向
例:


表格布局
- 一个TableRow节点是一行
- TableRow中有几个子节点就是几列
- 宽高可省略不设置(因为设置没用)


网友评论