Android应用程序----UI界面控件(界面布局小记)

界面布局

界面布局(Layout)是用户界面结构的描述,定义了界面中所有的元素、结构和相互关系

声明Android程序的界面布局有两种方法

使用XML文件描述界面布局

在程序运行时动态添加或修改界面布局

用户既可以独立使用任何一种声明界面布局的方式,也可以同时使用两种方式

使用XML文件声明界面布局的特点

将程序的表现层和控制层分离

在后期修改用户界面时,无需更改程序的源代码

用户还能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程,并且为界面设计与开发带来极大的便利性

线性布局

线性布局(LinearLayout)是一种重要的界面布局中,也是经常使用到的一种界面布局

在线性布局中,所有的子元素都按照垂直或水平的顺序在界面上排列

如果垂直排列,则每行仅包含一个界面元素

如果水平排列,则每列仅包含一个界面元素

创建Android工程

工程名称是LinearLayout

包名称是edu.hrbeu.LinearLayout

Activity名称为LinearLayout

为了能够完整体验创建线性布局的过程,首先删除Eclipse自动建立的/res/layout/main.xml文件,然后建立用于显示垂直排列线性布局的XML文件

右击/res/layout文件夹

选择New → File打开新文件建立向导

文件名为main_vertical.xml

保存位置为LinearLayout/res/layout

双击新建立的/res/layout/main_vertical.xml文件,Eclipse将打开界面布局的可视化编辑器

可视化编辑器顶部是资源配置清单,可以根据手机的配置不同选择不同的资源,主要用来实现应用软件的本地化

下部左侧是界面布局和界面控件,用户可以将需要的布局和控件拖拽到右面的可视化界面中,并修改布局和控件的属性

右侧是可视化的用户界面,能够实时的呈现用户界面,但对无法正确显示中文。左下角的“Layout”和“main_vertical.xml”能够在可视化编辑器和XML文件编辑器之间切换

在Eclipse右边的Outline中,双击LinearLayout,打开线性布局的属性编辑器

线性布局的排列方法主要由Orientation属性进行控制,vertical表示垂直排列,horizontal表示水平排列

选择Orientation的值为vertical,表示该线性布局为垂直排列

缺省情况下,Layout height的值为wrap_content,表示线性布局高度等于所有子控件的高度总和,也就是线性布局的高度会刚好将所有子控件包含其中

将Layout width属性的值改为fill_parent,表示线性布局宽度等于父控件的宽度,就是将线性布局在横向上占据父控件的所有空间

打开XML文件编辑器,main_vertical.xml文件的代码如下

第2行代码是声明XML文件的根元素为线性布局

第4、5、6行代码是在属性编辑器中修改过的宽度、高度和排列方式的属性

用户在可视化编辑器和属性编辑器中的任何修改,都会同步的反映在XML文件中;反之,也是如此

将四个界面控件TextView、EditText、Button、Button先后拖拽到可视化编辑器中

所有控件都自动获取控件名称,并把该名称显示在控件上,如TextView01、EditText01、Button01和Button02

修改界面控件的属性

所有界面控件都有一个共同的属性ID

ID是一个字符串,编译时被转换为整数,可以用来在代码中引用界面元素,一般仅在代码中需要动态修改的界面元素时才为界面元素设置ID,反之则不需要设置ID

从可视化编辑器中发现,界面控件的中文字符都显示为“□”,因为可视化编辑器还不能很好的支持中文字符

打开XML文件编辑器查看main_vertical.xml文件代码,发现在属性编辑器内填入的文字已经正常写入到XML文件中,例如第11、20、25行代码

将LinearLayout.java文件中的setContentView(R.layout.main),更改为setContentView(R.layout.main_vertical)。运行后的结果如图

建立横向线性布局与纵向线性布局相似,只需注意以下几点

建立main_ horizontal.xml文件

线性布局的Orientation属性的值设置为horizontal

将EditText的Layout width 属性的值设置为             wrap_content

将LinearLayout.java文件中的   setContentView(R.layout.main_vertical) 修改为setContentView(R.layout.main_ horizontal)

(0)

相关推荐