WEB开发网
开发学院手机开发Android 开发 android构建自定义的视图组件 阅读

android构建自定义的视图组件

 2010-05-10 19:48:00 来源:WEB开发网   
核心提示:在新类的构造方法中,得到超类所需的参数,android构建自定义的视图组件(3),并传递给超类的构造方法,另外,它继承了LinearLayout,并创建了一个组件,也可设置其他在这个心组件当中的视图组件,比如创建一个EditText和PopupList

在新类的构造方法中,得到超类所需的参数,并传递给超类的构造方法。另外,也可设置其他在这个心组件当中的视图组件,比如创建一个EditText和PopupList。注意,你也可以引入自己的参数和属性到xml文件中,这样会被取出并用于你的构造方法;

还可以创建事件监听器,用于容器中的视图组件,比如一个监听器方法,用于处理列表点击的监听器,更新EditText的文本内容;

创建自己的属性访问器和编辑器,比如,EditText的值可以在组件中初始设置,并能在需要的时候获取它的值;

在继承Layout类时,不需要覆盖onDraw()和onMeasure()方法,因为它们可能已经符合你的要求,当然,也可以覆盖它们实现自己特定的需求;

可能需要覆盖其他on…方法,比如onKeyDown()方法。

总之,使用Layout作为基础合成自定义的控件,有一些优点:

可以通过xml文件的方式声明指定的布局,和activity类似,或者可以通过编程的方式嵌入到你的代码中;

onDraw()方法和 onMeasure()等一般可适合需求,因此不必一定要覆盖它们;

可以快速的构建任何复杂的合成视图,重用它们为一个单一的组件。

合成控件的示例

在ApiDemos 示例中,演示了SpeechView,它继承了LinearLayout,并创建了一个组件,用于显示谈话中的引号。相关的类见:

samples/ApiDemos/src/com/example/android/apis/view/List4.java

samples/ApiDemos/src/com/example/android/apis/view/List6.java

代码

private class SpeechView extends LinearLayout {

public SpeechView(Context context, String title, String words) {

super(context);

this.setOrientation(VERTICAL);

// Here we build the child views in code. They could also have

// been specified in an XML file.

mTitle = new TextView(context);

mTitle.setText(title);

addView(mTitle, new LinearLayout.LayoutParams(

LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

mDialogue = new TextView(context);

mDialogue.setText(words);

addView(mDialogue, new LinearLayout.LayoutParams(

LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

上一页  1 2 3 4  下一页

Tags:android 构建 定义

编辑录入:coldstar [复制链接] [打 印]
赞助商链接