设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概的布局,然后用代码来微调
一、常见的布局
1. LinearLayout 线性布局
LinearLayout 几个重要的 XML 属性
xml 属性 | 说明 |
---|---|
android:id | 为组件设置一个资源 id,然后在 Java 中可以通过 findViewById(id) 找到该组件 |
android:background | 为组件设置一个背景图片或者背景色 |
android:layout_width | 布局的宽度,通常不直接写数字值,而是使用 wrap_content 组件实际大小 fill_parent/match_parent 填满父容器 |
android:layout_height | 同 layout:layout_width |
android:baselineAligned | 该属性为 false,将会阻止布局管理器与它的子元素基线对其 |
android:divider | 设置垂直布局时,两个按钮之间的分隔条 |
android:gravity | 设置布局管理器内组件的对齐方式,值可以是 top/button/left/right/center_vertical/fill_vertical... |
android:measureWithLargestChild | 当属性设置为true时,所有带权重的子元素都会具有最大元素的最小尺寸 |
android:orientation | 设置布局管理器内组件的排列方式,值可以是 vertical (默认) horizontal |
android:layout_gravity="left" 位于LinearLayout的最左侧
2. RelativeLayout 相对布局
重点:相对布局 (RelativeLayout) 以 父容器 或者 兄弟组件 参考+margin +padding 来设置组件的显示位置
1. 基本属性
XML 属性 | 说明 |
---|---|
android:gravity | 设置容器内组件的排序方式 |
android:ignoreGravity | 如果设置改属性为 true,将忽略 android:gravity |
android:gravity 本元素所有子元素的重力方向,处于怎样子的位置 ,有:
top 将对象放在其容器的顶部,不改变其大小.
bottom 将对象放在其容器的底部,不改变其大小.
left将对象放在其容器的左侧,不改变其大小.
right将对象放在其容器的右侧,不改变其大小.
center_vertical 将对象纵向居中,不改变其大小.
android:layout_gravity 和 android:gravity 的区别:
比如说对于Button控件:
android:layout_gravity 表示button在界面上的位置
android:gravity表示button上的字在button上的位置。
2.根据父容器定位属性:
XML 属性 | 说明 |
---|---|
android:layout_alignParentLeft | 左对齐父容器 |
android:layout_alignParentRight | 右对齐父容器 |
android:layout_alignParentTop | 顶部对齐父容器 |
android:layout_alignParentBottom | 底部对齐父容器 |
android:layout_centerHorizontal | 在父容器中水平居中 |
android:layout_centerVertical | 在父容器中垂直居中 |
android:layout_centerInParent | 在父容器的居中位置 |
各个属性示意图如下
3. 根据兄弟组件定位属性
XML 属性 | 说明 |
---|---|
android:layout_toLeftOf | 紧贴参考组件的左边 |
android:layout_toRightOf | 紧贴参考组件的右边 |
android:layout_above | 紧贴参考组件的上方 |
android:layout_below | 紧贴参考组件的下方 |
android:layout_alignTop | 对齐参考组件的上边界 |
android:layout_alignBottom | 对齐参考组件的下边界 |
android:layout_alignLeft | 对齐参考组件的左边界 |
android:layout_alignRight | 对齐参考组件的右边界 |
兄弟组件定位就是处于同一层次容器的组件
图中的组件1,2就是兄弟组件了,
如对于组件2 :android:layout_right = "@id/组件1"
而组件3与组件1或组件2并不是兄弟组件,所以组件3 不能通过 组件1或 2来进行定位
4. 设置外边距(偏移)属性
XML 属性 | 说明 |
---|---|
android:layout_maring | 设置组件上下左右的偏移量 |
android:layout_marginLeft | 设置组件左边的偏移量 |
android:layout_marginRight | 设置组件右边的偏移量 |
android:layout_marginTop | 设置组件上边的偏移量 |
android:layout_marginBottom | 设置组件下边的偏移量 |
上面这些属性用于设置组件对本来位置的偏移量
虚线框是组件2 本来的位置,如果设置了组件上边和左边的边距,则位置会发生一定的偏移,向右下偏移
5. 设置内边距(填充)属性
XML 属性 | 说明 |
---|---|
android:padding | 设置组件上下左右的填充 |
android:paddingLeft | 设置组件左边的填充 |
android:paddingRight | 设置组件右边的填充 |
android:paddingTop | 设置组件上边的填充 |
android:paddingBottom | 设置组件下边的填充 |
上面这些属性用于设置组件的内边距,内边距主要用于设置组件边框和子组件之间的间隙
6. 居中设置