使用XML布局文件控制UI界面
使用XML布局文件控制UI界面可以分为以下两个关键步骤。
(1)在Android应用的res/layout目录下编写XML布局文件,可以是任何符合Java命名规则的文件名。创建后,R.java会自动收录该布局资源。
(2)在Activity中使用以下Java代码显示XML文件中布局的内容。
setContentView(R.layout.main);
在代码中控制UI界面
在代码中控制UI界面可以分为以下3个关键步骤。
(1)创建布局管理器,可以是帧布局管理器、表格布局管理器、线性布局管理器和相对布局布局管理器等,并且设置布局管理器的属性。例如,为布局管理器设置背景图片等。
(2)创建具体的组件,可以是TextView、ImageView、EditText和Button等任何Android提供的组件,并且设置组件的布局和各种属性。
(3)将创建的具体组件添加到布局管理器中。
使用XML和JAVA代码混合控制UI
使用XML和Java代码混合控制UI界面,习惯上把变化小、行为比较固定的组件放在XML布局文件中,把变化较多、行为控制比较复杂的组件交给Java代码来管理。
在Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成的。其中,View类是所有UI组件的基类,而ViewGroup类是容纳这些UI组件的容器,其本身也是View类的子类。在ViewGroup类中,除了可以包含普通的View类外,还可以再次包含ViewGroup类。View类和ViewGroup类的层次结构如下图所示。
开发自定义的View组件大致分为以下3个步骤。
(1)创建一个继承android.view.View类的View类,并且重写构造方法。
(2)根据需要重写相应的方法。
(3)在项目的活动中,创建并实例化自定义View类,并将其添加到布局管理器中。
四大常用布局
线性布局
线性布局是将放入其中的组件按照垂直或水平方向来布局,也就是控制放入其中的组件横向排列或纵向排列。在线性布局中,每一行(针对垂直排列)或每一列(针对水平排列)中只能放一个组件。并且Android的线性布局不会换行,当组件一个挨着一个排列到窗体的边缘后,剩下的组件将不会被显示出来。
在Android中,可以在XML布局文件中定义线性布局管理器,也可以使用Java代码来创建。推荐使用在XML布局文件中定义线性布局管理器。在XML布局文件中定义线性布局管理器,需要使用<LinearLayout>标记,其基本的语法格式如下:
实例:
表格布局
表格布局与常见的表格类似,它以行、列的形式来管理放入其中的UI组件。表格布局使用<TableLayout>标记定义,在表格布局中,可以添加多个<TableRow>标记,每个<TableRow>标记占用一行,由于<TableRow>标记也是容器,所以在该标记中还可添加其他组件,在<TableRow>标记中,每添加一个组件,表格就会增加一列。在表格布局中,列可以被隐藏,也可以被设置为伸展的,从而填充可利用的屏幕空间,也可以设置为强制收缩,直到表格匹配屏幕大小。
在XML布局文件中定义表格布局管理器的基本的语法格式如下:
需要添加的UI组件
多个
实例:
帧布局
在帧布局管理器中,每加入一个组件,都将创建一个空白的区域,通常称为一帧,这些帧都会根据gravity属性执行自动对齐。默认情况下,帧布局是从屏幕的左上角(0,0)坐标点开始布局,多个组件层叠排序,后面的组件覆盖前面的组件。
在XML布局文件中,定义帧布局管理器可以使用<FrameLayout>标记,其基本的语法格式如下:
< FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
属性列表
>
FrameLayout>
实例:
相对布局
相对布局是指按照组件之间的相对位置来进行布局,如某个组件在另一个组件的左边、右边、上方或下方等。
在XML布局文件中,定义相对布局管理器可以使用<RelativeLayout>标记,其基本的语法格式如下:
实例:
注:要熟记一下内容:
Android:layout_toRightOf=”@+id/名称” 位于“名称”的右侧
Android:layout_toLeftOf=”@+id/名称” 位于“名称”的左侧
Android:layout_above=”@+id/名称” 位于“名称”的上方
Android:layout_below=”@+id/名称” 位于“名称”的下方
Android:layout_alignRight=”@+id/名称”和“名称”右边界对齐
Android:layout_alignLeft=”@+id/名称” 和“名称”左边界对齐
绝对布局管理器
此处略!android:orientation————horizontal(水平排列)、vertical(垂直排列)
android:gravity——————center_vertical、top、bottom、left、right 右下角对齐:right|bottom
android:layout_width ————wrap_content、match_parent、fill_parent
android:layout_height————wrap_content、match_parent、fill_parent
android:id=”@+id/名称”
android:background=”#FFFFFFFF”
android:text=”显示内容”
android:textSize=”20px”