如果你不想创建一个完全自定义的组件,而是由几个现有组件的组合产生的新的组件,那么混合组件技术就更加适合。简单的来说,这样把几个现有的组件融合到一个逻辑组合里面可以封装成一个新的组件。例如,一个Combo Box组件可以看作是是一个EditText和一个带有弹出列表的Button组件的混合体。如果你点击按钮为列表选择一项,
在Android中,其实还有其他的两个View类可以做到类似的效果: Spinner和AutoCompleteTextView,,但是Combo Box作为一个例子更容易让人理解。
下面简单的介绍如何创建组合组件:
onDraw()
和onMeasure()
方法,因为Layout会有比较好的默认处理。但是,如果你觉得有必要你也可以重载它。 on
系列函数,例如通过onKeyDown()
的重载,你可以通过按某个键去选择列表中的对应的值。 总之,把Layout类作为基类有下面几个优点:
onDraw()
函数和onMeasure()
函数是没有必要重载的,两个函数已经做得很好了。 In the API Demos project
在API Demos工程中,有两个List类的例子——Example 4和Example 6,里面的SpeechView组件是从LinearLayout类派生过来,实现显示演讲显示功能,对应的原代码是List4.java
和List6.java
。