Android为我们提供了大量UI开发工具,合理使用它们,就可以编写出各式各样的漂亮界面。
例如简单的机票查询界面:
[object Object]
2、 常见控件使用方法
借助大量的UI控件和合理的排版规划,我们可以非常轻松的编写出想要的界面效果。
可以通过一张图片了解Android控件的继承关系:
所有控件继承自android.View
1) TextView
TextView是Android最简单的控件。它主要用于在界面上显示一段文本信息(但不允许用户修改内容)。
我们将activity_main.xml中的代码修改如下:
定义TextView
android:id即给控件定义一个id,之后通过这个id就能定位到该控件。
Android中所有控件都有这两个属性:android:layout_width|android:layout_height,指定了控件的宽度和高度。
可选值为match_parent/wrap_content,前者表示让当前控件大小和父布局一致;
后者表示由控件内容决定当前控件大小(即刚好包含里面的内容)。android:text表示文本框显示的内容。TextView还有很多属性可以设置,例如颜色(android:textColor 以十六进制表示)、
文字对齐方式(android:gravity)等等。各控件的属性不用特意记,需要时查阅文档即可。关于布局,我们这里采用LinearLayout线性布局方式,待会再细说。
AllTest右键→Run as→Android Application启动模拟机,得到如图界面:
TextView效果
2) Button
Button是程序和用户交互的一个重要控件。它可配置的属性基本和TextView相同。
我们可以在activity_main.xml中这样加入Button:
定义Button
更新Android Application,得到如下效果:
Button效果
为什么按钮占据整行了呢?因为它的属性android:layout_width被我们设置为match_parent,和父布局LinearLayout的一样。
在主活动中为按钮注册一个监听器,当点击按钮将执行onClick()方法,完成我们需要的操作。
具体实现过程将在本系列第四篇文章中,和活动数据的传递一起讲述。现在我们先纯粹显示一个按钮。3) EditText
EditText是程序与用户进行交互的另一重要控件,它允许用户在控件中输入和编辑内容,并且可以在程序中对这些内容进行处理。
我们发微博、聊QQ,都将使用到它。现在在界面中加入EditText,继续修改activity_main.xml中的代码:
定义EditText
android:hint属性指定了一段提示性文本。android:maxLines指定EditText最大行数为两行,当输入的内容超过两行,文本会向上滚动,EditText不再拉伸。
得到如下效果:
EditText效果
到这儿我们能总结出Android控件的使用规律了:基本上用法大同小异,给控件定义一个id,再指定宽度、高度,
然后加些控件特有的属性就可以了。使用XML来编写界面一点都不难。4)ImageView
ImageView是用于在界面上展示一张图片的控件,它能让我们的程序界面变得更加丰富多彩。
drawable文件夹下已自动生成一张ic_launcher.png图片,我们先在界面上展示它。修改activity_main.xml中的代码:
定义ImageView
这里使用android:src属性给ImageView指定了一张图片(格式不限),
因为图片宽高均设为wrap_content,所以无论图片多大都能完整展示出来。重新运行程序:
[object Object]
LinearLayout布局
如果指定的是“horizontal”,控件就会在水平方向上排列。
水平排列布局(2) RelativeLayout相对布局这是另一常用布局,相比LinearLayout显得更加随意。 它可以通过相对定位的方式让控件出现在布局的任何位置。RelativeLayout属性比较多,但都有规律可循, 并不难理解记忆。我们继续通过实例体会,修改activity_main.xml中的代码:
RelativeLayout布局
类似android:layout_alignParentLeft的属性可能之前没接触过,
可它的名字已经完全说明了它的作用——控件相对于父布局左对齐。重新运行程序:
RelativeLayout效果
上例控件都是相对于父布局进行定位的,还可以相对于控件进行定位,只要改变相应属性,具体可参见下表,不再赘述。
RelativeLayout的部分属性(3) FrameLayout相对于前两种布局,FrameLayout可简单多了。 因为它没有任何定位方式,所有的控件都会摆放在布局的左上角。因此应用场景也少了很多。很简单吧!这里我们不再演示。 (4) TableLayoutTableLayout允许我们使用表格的方式来排列控件。表格自然会有行和列。设计表格时我们尽量让每一行拥有相同列数, 这样的表格是最简单的。当表格的某行一定要有不相等列数时,可以通过合并单元格的方式处理。通过一个登录界面的实例化来使用这个布局。 可以这样修改activity_main.xml中的代码:
TableLayout布局
TableLayout布局(接上)
在TableLayout中每加入一个TableRow,表示在表格中添加一行;在TableRowt每加入一个控件,就表示在该行中加入一列。
在TableLayout中我们无法指定控件宽度,但是可以通过android:stretchColumns属性解决。
它允许将TableLayout中的某一列拉伸,以达到自适应屏幕宽度的作用。
android:stretchColumns属性
将其值指定为1,如果表格不能完全占满屏宽,就拉伸第二列。没错!“1”就是拉伸第二列,“0”就是拉伸第一列。
运行这个程序:
TableLayout布局效果
而关于点击按钮的消息响应以及用户名、密码的数据存储这里暂不讲解,重点示范TableLayout布局的使用。
布局还可以嵌套布局,以形成层次分明、功能健全的精美界面。activity_main.xml的代码并不复杂:
LinearLayout布局嵌套
回头看之前的机票界面,就是通过LinearLayout布局嵌套加上简单、常用控件完成的:
作者:叶琛_ 链接:
Android开发(一)| 手把手带您创建第一个Android项目
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=534