Android app开发从零开始之基础篇—布局和控件(一)— 布局

来源:互联网 发布:弓箭女王升级数据 编辑:程序博客网 时间:2024/06/11 04:45

布局和控件(一)— 布局

    前言:每一个App都有许多个界面,有了界面再来加载显示数据。Android提供了一些布局和控件(以下统称为组件),方便开发者进行界面的搭建,如GridLayout、FrameLayout、LinearLayout、RelativeLayout、TableLayout布局,还有TextView、EditText、Button控件等。本篇我们先来简单认识一下常用的几个布局,包括:RelativeLayout、LinearLayout、FrameLayout。

一、属性:

    正式介绍布局之前,先来认识一下属性。每个组件都有自己的属性,比如大小、颜色等等。在搭建界面的时候,依据需求修改组件的属性,就是我们要做的事情。在众多的属性中,有一些是对每个组件都适用的,这里我们称这种属性为通用属性;有一些是某种组件特有的,我们称为特有属性。首先,先来介绍几个常用的通用属性:

    (1)id:设置组件的id,相当于给组件设置一个身份标识。

    (2)layout_width:设置组件的宽度,单位dp。默认值:(1)wrap_content:设置组件宽度适应内容的实际宽度;(2)match_parent:设置组件宽度铺满容器。

    (3)layout_height:设置组件的高度,单位dp。默认值:(1)wrap_content:设置组件高度适应内容的实际宽度;(2)match_parent:设置组件高度铺满容器。

    (4)padding:设置组件的边界与内容的间距,单位dp。当设置padding时,是同时设置了组件的4个边界与内容的间距。也可以使用paddingBottom(下边界)、paddingTop(上边界)、paddingLeft(左边界)、paddingRight(右边界)单独设置某个方向上的边界与内容的间距。

    (5)layout_margin:设置组件与其他组件之间的间距,单位dp。当设置layout_margin时,会同时设置组件与其上、下、左、右4个方向上的其他组件的间距,也可以使用layout_marginBottom、layout_marginTop、layout_marginLeft、layout_marginRight单独设置其中一个方向上的间距。

    (6)gravity:设置组件中的内容在组件中的对其方式。可以同时设置多个值,值与值之间使用一个竖线 “|”分隔。如

    (7)background:设置组件的背景。可以使用颜色,也可以使用图片。使用颜色时,属性值格式是“#ffffffff”,即以“#”开头,后接8位16进制数表示的颜色值。其中,颜色值的前2位表示颜色的透明度,如果不需设置透明度,可以省略。即假设我要设置一个红色背景,我可以将background设置为“#ee0000”,如果设为“#80ee0000”,则表示设置了透明度为80的红色。background也可以设置为图片,使用图片时,属性值格式为“@drawable/图片名”或者“@mipmap/图片名”,因为图片一般放在项目中的drawable文件夹(使用Eclipse时都放在drawable文件夹,但是AS中新增了mipmap文件夹,默认的ic_launcher就是放在其中,当然也可以自己新建drawable文件夹)。

二、RelativeLayout 相对布局:

    相对布局中的内容能够以相互之间相对位置的方式进行排列,我们可以在相对布局中将要放置的内容随意排放在任意位置。相对布局有下列一些特有属性:

    1、布局中的内容在布局中的对齐排列方式:

       (1)layout_alignParentLeft设置布局中的内容是否与布局的左边界对齐,属性值:true或false。另外还有上、下、右边界对齐,分别可以通过设置以下三个属性来实现。layout_alignParentToplayout_alignParentBottomlayout_alignParentRight。

        (2)layout_centerHorizontal设置布局中的内容是否在布局中水平居中,属性值为true或false,默认为false。

        (3)layout_centerVertical设置布局中的内容是否在布局中垂直居中,属性值为true或false,默认为false。

        (4)layout_centerInParent设置布局中的内容是否在布局中居中,相当于同时设置了layout_centerHorizontal和layout_centerVertical为true。

    2、布局中组件与组件的对齐方式:layout_alignXXX,属性值:组件的id。其中XXX表示上(Top)、下(Bottom)、左(Left)、右(Right)四个方向。例如对某个控件设置了android:layout_alignLeft="@+id/button1" 属性,则表示将该控件与另一个id为button1的控件进行左对齐。

   3、控件与控件的相对位置关系:

       (1)layout_toLeftOf属性值:组件id。设置当前组件位于指定的id所表示的组件的左边。如对某个组件设置了android:layout_toLeftOf="@+id/btn_ok",则表示将该组件置于id为btn_ok的组件左边。同理,要设置右边位置,就是设置组件的layout_toRightOf属性。

       (2)layout_above:属性值:组件id。设置当前组件位于指定的id所表示的组件的上方。如对某个组件设置了android:layout_above="@+id/btn_ok",则表示将该组件置于id为btn_ok的组件上方。要设置下方位置,则要设置组件的layout_below属性。

二、LinearLayout 线性布局:

    线性布局中的内容会根据所设置的布局的方向,依次(从上到下或者从左到右,按所设方向决定)排列。线性布局的特有属性有:

       (1)orientation设置布局的方向,属性值:vertical(竖直)horizontal(水平)。

       (2)layout_weight权重。该属性是对布局中的内容设置的。位于线性布局中的组件可以设置layout_weight属性,设置了该属性的组件将按照比例瓜分所属布局中剩余的所有空间。需要注意的是,对于设置了该属性的所有组件,其宽或者高(看布局的方向,水平方向就是宽,竖直方向就是高)需设置为0dp或者match_parent,并且所有需要设置的组件设置的值必须一致(即全部为0dp或全部为match_parent)。在实际开发时IDE也会给予提示。如果设置为0dp,则layout_weight属性值越大,所占空间越大,如果设置为match_parent,则layout_weight属性值越大,所占空间越小。

       (3)layout_gravity设置控件在布局上的对齐方式。相比于RelativeLayout比较灵活的对齐方式,LinearLayout中的内容的对齐方式也可以同时设置多个属性,但是最终生效的只会是属性值中最后一个值。

三、FrameLayout 帧布局:

    帧布局中的内容会按照加入的顺序,从下到上进行层叠。即最先加入的会置于最底层,然后后面加入的会依次向上层叠。

   后记:Android中为我们提供了常用的布局方便我们的界面搭建工作。充分利用布局的组合,可以让我们轻松应付App开发中各种各样的界面。本篇只是简单介绍一下几种常用布局及其属性在布局文件中的使用,还有更多灵活的使用方法需要在实际应用中进行探索。

0 0
原创粉丝点击