目录
4.4 创建自定义控件
在前两节我们学习了Android
中的一些常用控件和基本布局的用法,不过当时我们并没有关注这些控件和布局的继承结构,现在是时候来看一下了,如 图4.25
所示。
可以看到,我们所用的所有控件都是直接或间接继承自 View
的,所用的所有布局都是直接或间接继承自 ViewGroup
的。
View
是
Android
中最基本的一种
UI
组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在 View
的基础上
又添加了各自特有的功能。而
ViewGroup
则是一种特殊的
View
,它可以包含很多子
View
和子
ViewGroup
,是一个用于放置控件和布局的容器。
这个时候我们就可以思考一下,当系统自带的控件并不能满足我们的需求时,可不可以利用上面的继承结构来创建自定义控件呢?答案是肯定的,下面我们就来学习一下创建自定义控件的
两种简单方法。先将准备工作做好,创建一个
UICustomViews
项目。
4.4.1 引入布局
如果你用过iPhone
,应该会知道,
iPhone
应用的界面顶部有一个标题栏,标题栏上会有一到两个按钮可用于返回或其他操作(iPhone
没有专门的返回键)。现在很多
Android
程序喜欢模仿
iPhone
的风格,会在界面的顶部也放置一个标题栏。虽然
Android
系统已经给每个
Activity
提
供了标题栏功能,但这里我们决定先不使用它,而是创建一个自定义的标题栏。
经过前两节的学习,相信创建一个标题栏布局对你来说已经不是什么困难的事情了,只需要加 入两个 Button
和一个
TextView,
然后在布局中摆放好就可以了。可是这样做会存在一个问题, 一般我们的程序中可能有很多个 Activity
需要这样的标题栏,如果在每个
Activity
的布局中都编写一遍同样的标题栏代码,明显就会导致代码的大量重复。这时我们就可以使用引入布局的方式来解决这个问题,在 layout
目录下新建一个
title.xml
布局,代码如下所示:
<LinearL