这篇详细讲一下常用布局:LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout。


1. LinearLayout 线性布局

线性布局是我初学 Android 开发使用最多、自认为最简单的布局,所以先来说说它。

线性布局是根据定义控件的先后顺序来摆放的,有 横向纵向 两种摆放规则。具体定义如下:

1
2
android:orientation="vertical"   // 纵向摆放控件
android:orientation="horizontal" // 横向摆放控件

对齐方式:

1
2
android:gravity="center"|"start"|"end"|"top"|"bottom" // 控件子元素相对于自己的对齐方式
android:layout_gravity="center"... // 控件相对于父元素的对齐方式

gravity 其实还有 left & right 两个值, left 代表绝对的左边,而 start 是根据地域的阅读习惯改变。根据情况选择使用。

注意:嵌套太深影响性能

2. RelativeLayout 相对布局

相对布局默认控件都存放于左上角,根据属性指定控件出现在布局的任何位置,比如在谁的上/下/左/右边。

指定相对位置,值为控件id:

1
2
3
4
5
6
7
8
android:layout_toLeftOf 	 	该组件位于引用组件的左方
android:layout_toRightOf 该组件位于引用组件的右方
android:layout_above 该组件位于引用组件的上方
android:layout_below 该组件位于引用组件的下方
android:layout_alignTop 组件的上边缘和引用组件的上边缘对齐
android:layout_alignLeft 组件的左边缘和引用组件的左边缘对齐
android:layout_alignBottom 组件的下边缘和引用组件的下边缘对齐
android:layout_alignRight 组件的右边缘和引用组件的右边缘对齐

指定对齐方式,值为true/false:

1
2
3
4
5
6
7
android:layout_alignParentLeft  	该组件是否对齐父组件的左端
android:layout_alignParentRight 该组件是否齐其父组件的右端
android:layout_alignParentTop 该组件是否对齐父组件的顶部
android:layout_alignParentBottom 该组件是否对齐父组件的底部
android:layout_centerInParent 该组件是否相对于父组件居中
android:layout_centerHorizontal 该组件是否横向居中
android:layout_centerVertical 该组件是否垂直居中

3. Frame Layout——帧布局

没有任何定位方式,默认排列在布局左上角,后面的控件会将前面的覆盖掉。一般结合 fragment 使用。

4. ConstraintLayout —— 约束性布局

根据布局中的其它元素或视图,确定控件在屏幕中的位置,受到三类约束:其它视图、父容器、基准线(guideline)

这里直接开吃郭大神的文章就好,图文并茂:Android新特性介绍,ConstraintLayout完全解析

通用属性

  • 控件大小

    1
    2
    android:layout_width
    android:layout_height
  • 外边距

    1
    2
    3
    4
    android:layout_marginStart
    android:layout_marginEnd
    android:layout_marginTop
    android:layoot_marginBottom
  • 内边距

    1
    2
    3
    4
    android:layout_paddingStart
    android:layout_paddingEnd
    android:layout_paddingTop
    android:layout_paddingBottom

以上属性全部使用常见的如:32dp等具体尺寸赋值。

参考文档

Android几种常用布局详解

Android系统五大布局详解Layout