【Android基础】四种基本布局

介绍

布局是一种可以用于放置很多控件的容器,可以按照一定的规律调整内部控件的位置,从而编写处精美的界面。

布局的内部除了放置控件外,还可以放置布局,通过多层布局的嵌套,可以完成比较复杂的界面实现,如下图:

【Android基础】四种基本布局_第1张图片

下面介绍Android中四种最基本的布局。

LinearLayout

线性布局,一种非常常用的布局。这个布局会将所包含的空间在线性方向上依次排列。

线性布局的方向

在activity_main.xml中,通过android:orientation="vertical"指定了排列方向是垂直方向。

【Android基础】四种基本布局_第2张图片

如果android:orientation="horizontal"则指定排列方向是水平方向。

【Android基础】四种基本布局_第3张图片

注意:当LinearLayout的排列方向是horizontal(水平方向)时,内部控件绝对不能将宽度设定为match_parent,这样的话一个控件就会将整个水平方向占满,其他控件就没有可以放置的位置了。

关键属性用法

android:layout_gravity

用于指定控件在布局中的对齐方式。

当LinearLayout的排列方向是horizontal水平方向时,只有垂直方向上的对齐方式才会生效,此时水平方向上的长度不固定,每添加一个控件,水平方向上的长度会改变。

当LinearLayout的排列方向是vertical垂直方向时,只有水平方向上的对齐方式才会生效。

示例:

当LinearLayout的排列方向是horizontal水平方向时,指定垂直方向上的排列方式。

【Android基础】四种基本布局_第4张图片

 

android:layout_weight

这个属性允许我们使用比例的方式指定控件的大小。

当使用了android:layout_weight属性后,空间的宽度就不再由android:layout_width控制了。

示例:

【Android基础】四种基本布局_第5张图片

我们在 EditText 和 Button 里都将 android:layout_weight 属性的值指定为 1,这表示EditText 和 Button 将在水平方向平分宽度 。

为什么将 android:layout_weight 属性的值同时指定为 1 就会平分屏幕宽度呢?其实原理也很简单,系统会先把 LinearLayout 下所有控件指定的 layout_weight 值相加,得到一个总值,然后每个控件所占大小的比例就是用该控件的 layout_weight 值除以刚才算出的总值。因此如果想让 EditText 占据屏幕宽度的 3/5,Button 占据屏幕宽度的 2/5,只需要将 EditText 的layout_weight 改成 3,Button 的 layout_weight 改成 2 就可以了。

RelativeLayout

相对布局。和LinearLayout排列规则不同,RelativeLayout更加随意,可以通过相对定位让控件出现在布局的任何位置。

RelativeLayout的属性非常多,但是这些属性都是有规律的。

示例:

【Android基础】四种基本布局_第6张图片

属性介绍

  • layout_alignParentTop,父视图的上边

  • layout_alignParentBottom,父视图的下边

  • layout_alignParentLeft,父视图的左边

  • layout_alignParentRight,父视图的右边

  • layout_centerInParent,相对于父视图完全居中

  • layout_centerHorizontal,相对于父视图水平居中

  • layout_centerVertical,相对于父视图垂直居中

    【Android基础】四种基本布局_第7张图片

  • layout_above,视图的下边与相对视图的上边对齐

  • layout_below,视图的的上边与相对视图的下边对齐

  • layout_toRightOf,视图的左边与相对视图的右边对齐

  • layout_toLeftOf,视图的右边与相对视图的左边对齐

    【Android基础】四种基本布局_第8张图片

    【在上面的例子中,其他视图都是和Button3相互对齐的。】

  • layout_alignTop,视图与基准视图的上边对齐

  • layout_alignBottom:视图与基准视图的下边对齐

  • layout_alignLeft:视图与基准视图的左边对齐

  • layout_alignRight:视图与基准视图的右边对齐

  • layout_alignBaseline:视图与基准视图的基准线对 

    【Android基础】四种基本布局_第9张图片

FrameLayout

FrameLayout的应用场景少了很多,这种布局没有任何的定位方式,所有的控件都会摆放在布局的左上角。

【Android基础】四种基本布局_第10张图片

 

 

在介绍碎片的时候会用到它。

TableLayout

TableLayout允许使用表格的方式来排列控件。

既然是表格,那就一定会有行和列,在设计表格时我们尽量应该让每一行都拥有相同的列数,这样的表格也是最简单的。不过有时候事情并非总会顺从我们的心意,当表格的某行一定要有不相等的列数时,就需要通过合并单元格的方式来应对。

在XML布局文件中定义表格布局的基本语法格式如下:



UI控件
</TableRow>
UI控件
</TableLayout>

TableLayout继承自LinearLayout, 因此它完全支持LinearLayout所支持的属性,此外,它还有其他的常用属性。TableLayout布局的常用属性如表所示。

属性名称 功能描述
android:stretchColumns 设置可被拉伸的列。如:android:stretchColumns=“0”, 表示第0列可被拉伸
android:shrinkColumns 设置可被收缩的列,如:android:shrinkColumns=“1. 2”, 表示1, 2列可收编
android:collapseColumns 设置可被隐藏的列,如:android:collapseColumns=”*”, 表示所有列可被隐藏
android:layout_column 设置该控件显示的位置,如 android:layout_column=“1”表示在第1列显示
android:layout_span 设置该控件占据几列,默认为1列

示例:

【Android基础】四种基本布局_第11张图片

 

 

你可能感兴趣的:(Android,Android)