Android入门基础知识总结之Layout布局篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zouguo1211/article/details/85221823

临近考试,做一下简单的总结,巩固一下;
不能面面俱到,举的都是一些常用的基础例子;

下一篇:Android入门基础知识总结之常用控件篇

一、Layout布局篇

通用属性还请自行体会,这里只说了部分特有或常用属性;

1) LinearLayout(线性布局)

一种非常常用的布局,会将它所包含的控件在线性方向上以此排列。

布局属性

orientation

android:orientation="vertical"

orientation用来指定布局排列方向,其中

水平排列:horizontal

垂直排列:vertical

如果不指定orientation属性,默认为水平排列;

控件属性

layout_gravity

android:layout_gravity="end"

layout_gravity是用于指定线性布局中的控件对齐方式,其中

  • 居中:center

  • 水平居中:center_horizontal

  • 垂直居中:center_vertical

  • 靠左:start|right(当父级排列方向为垂直排列有效)

  • 靠右:end|left(当父级排列方向为垂直排列有效)

  • 靠上:top(当父级排列方向为水平排列有效)

  • 靠下:bottom(当父级排列方向为水平排列有效)

layout_weight

android:layout_weight="1"

layout_weight是用于使用比例来控制控件大小

样例演示

<LinearLayout
      android:layout_width="match_parent"
      android:layout_height="200dp"
      android:orientation="vertical"
      android:background="#F6A9FB"
      >
      <TextView
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:hint="@string/test_words"
          android:background="#E805F5"
           />
      <TextView
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:hint="@string/test_words"
          android:background="#8E1A95"
          />
      <TextView
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="2"
          android:hint="@string/test_words"
          android:background="#573C59"
          />
</LinearLayout>

显示效果

在这里插入图片描述

这里是竖直排列,我们可以发现前两行的TextView各占了竖直方向的1/4高,第三个TextView占了1/2高;

对于代码的两个属性

android:layout_height="0dp"
android:layout_weight="1"

当我们想要使用比例来控制空间的高度时,那么就不能由layout_height的值来决定,一般设为0dp;

然后设定相应的layout_weight值,这里计算原理是

LinearLayout下的所有控件的layout_weight值相加得到一个总值,然后每个控件所占的比列,即为自身的layout_weight值除于总值;

2) RelativeLayout(相对布局)

一种非常常用的布局,可以通过相对定位的方式来指定控件在布局中的位置;

相对布局的布局方式更自由,属性字段更多,但都有规律可循,大部分都是见文知意;

控件属性

与parent相对

layout_alignParentXXX

指定控件相对父级布局的位置,值为trueorfalse,其中XXX可以为:

  • Top:layout_alignParentTop,在父级的顶部

  • Bottom:layout_alignParentBottom,在父级的底部

  • Left:layout_alignParentLeft,在父级的左侧,为了兼容性,通常与layout_alignParentStart一起使用;

  • Start:layout_alignParentStart,在父级的左侧,为了兼容性,通常与layout_alignParentLeft一起使用;

  • Right:layout_alignParentRight,在父级的右侧,为了兼容性,通常与layout_alignParentEnd一起使用;

  • End:layout_alignParentEnd,在父级的右侧,为了兼容性,通常与layout_alignParentRight一起使用;

样例:

指定控件在父级布局中的右上角

android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
layout_centerXXX

指定控件在相对父级布局的位置,值为trueorfalse,其中XXX可以为:

  • Horizontal:layout_centerHorizontal,相对父级水平居中位置;
  • Vertical:layout_centerVertical,相对父级垂直居中位置;
  • InParent:layout_centerInParent,相对父级水平垂直居中位置;

控件之间相对

layout_toXXXOf

指定控件相对指定id的控件的位置,值为相对控件Mid,其中XXX可以为:

  • Left:layout_toLeftOf,在M的左侧,为了兼容性,通常与layout_toStartOf一起使用;
  • Start:layout_toStartOf,在M的左侧,为了兼容性,通常与layout_toLeftOf一起使用;
  • Right:layout_toRightOf,在M的右侧,为了兼容性,通常与layout_toEndOf一起使用;
  • End:layout_toEndOf,在M的右侧,为了兼容性,通常与layout_toRightOf一起使用;

这里左侧、右侧仅仅是在竖直方向上考虑的,即两个控件不一定在同一水平线上的,请注意区分;

样例:

在这里插入图片描述

layout_below和layout_above

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

  • below:layout_below,在M的下方
  • above:layout_above,在M的上方

这里的上方、下方仅仅是在水平方向上考虑的,即两个控件不一定在同一垂直线上的,请注意区分;

样例:

在这里插入图片描述

layout_alignXXX

指定控件相对指定id的控件的位置,值为相对控件Mid,其中XXX可以为:

  • Top:layout_alignTop,表示指定控件的上边缘和M的上边缘对齐

  • Bottom:layout_alignBottom,表示指定控件的下边缘和M的下边缘对齐

  • Left:layout_alignLeft,表示指定控件的左边缘和M的左边缘对齐,为了兼容性,通常与layout_alignStart一起使用;

  • Start:layout_alignStart,表示指定控件的左边缘和M的左边缘对齐,为了兼容性,通常与layout_alignLeft一起使用;

  • Right:layout_alignRight,表示指定控件的右边缘和M的右边缘对齐,为了兼容性,通常与layout_alignEnd一起使用;

  • End:layout_alignEnd,表示指定控件的右边缘和M的右边缘对齐,为了兼容性,通常与layout_alignRight一起使用;

  • Baseline: layout_alignBaseline,表示指定控件的基线和M的基线对齐

这里边缘对齐,指的是在同一水平线上或同一垂线上;

样例:

在这里插入图片描述

3) FrameLayout(帧布局)

为每个控件创建一个空白区域(称为一帧,每个控件占据一帧)。

帧布局没有复杂的定位方式,所有控件默认左上角,并按照先后放入的顺序重叠摆放,先放入的控件在最底层,后放入的显示在最顶层;

布局属性

android:foreground="@"
android:foregroundGravity="left"

foreground

设置帧布局容器的前景图像,始终位于所有子控件之上;

foregroundGravity

设置前景图像的显示位置

控件属性

参见LinearLayoutlayout_gravity

4) TableLayout(表格布局)

表格布局继承于LinearLayout,以表格方式排列空间,通过行和列将界面划分为多个单元格;

每一行都由TableRow对象组成,TableRow的数量决定表格的行数;

TableRow里最多控件个数决定表格的列数;

除了继承了LinearLayout的属性和方法之外,还有一些特有属性:

布局属性

android:stretchColumns="2"
android:shrinkColumns="2"
android:collapseColumns="2"

stretchColumns

设置该列被拉伸,列号从0开始,传多个值用,隔开;

shrinkColumns

设置该列被收缩,列号从0开始,传多个值用,隔开;

collapseColumns

设置该列被隐藏,列号从0开始,传多个值用,隔开;

控件属性

android:layout_column="1"
android:layout_span="1"

layout_column

设置该单元格显示位置,从0开始;

layout_span

设置该单元格占据几列,默认一列;

后记

只是简单的介绍了几个基础布局,还有一些新增的比如百分百布局这里暂时就不做介绍了;
布局的学习还是需要多动手,多思考,才能让我们的界面更加人性化,分辨率兼容性更强;
有问题欢迎评论或者联系我,看到了会及时回复的;
邮箱:[email protected]

下一篇:Android入门基础知识总结之常用控件篇

猜你喜欢

转载自blog.csdn.net/zouguo1211/article/details/85221823