为什么需要自定义组件?
因为在实际项目中或许 Android 给出的View 的功能不足以你实现一些特定的功能,这时候你就有必要去扩展它,或者去组装它,使它的功能更为强大。 下面是一段从CSDN 博客摘录的一段话: 如果你不想创建一个完全自定义的组件,而是由几个现有组件的组合产生的新的组件,那么混合组件技术就更加适合。简单的来说,这样把几个现有的组件融合到一个逻辑组合里面可以封装成一个新的组件。例如,一个Combo Box组件可以看作是是一个EditText和一个带有弹出列表的Button组件的混合体。如果你点击按钮为列表选择一项, 在Android中,其实还有其他的两个View类可以做到类似的效果: Spinner和AutoCompleteTextView,,但是Combo Box作为一个例子更容易让人理解。 下面简单的介绍如何创建组合组件: 一般从Layout类开始,创建一个Layout类的派生类。也许在Combo box我们会选择水平方向的LinearLayout作为父类。记住,其他的Layout类是可以嵌套到里面的,因此混合组件可以是任何组件的混合。注意,正如Activity一样,你既可以使用外部XML文件来声明你的组件,也可以嵌套在代码中。 你也可能重载一些on系列函数,例如通过onKeyDown()的重载,你可以通过按某个键去选择列表中的对应的值。 正如activity一样,你也可以通过XML文件去声明你的新组件,或者你也可以在代码中嵌套。 onDraw()函数和onMeasure()函数是没有必要重载的,两个函数已经做得很好了。你可以很快的创建你的混合组件,并且可以像单一组件那样使用。
package com.terry.custom.widget; 设置监听其实就是实现一个接口功能,不知道这样表达是否正确,如果不正确请指教,这里我的理解是这样的: public 通过上面的代码,我们己经封装好了一个组合控件,下面给出调用和设置代码: package com.terry; |