修改现有的View

   

工具箱包含许多普通需求的UI,但这些控件不一定通用。通过定制这些基本的View,你可以避免重新实现现有的逻辑,而做到为应用程序裁剪它需要的UI和功能。

 

基于现有的控件来创建新的widget,需要创建一个新类来扩展它。如下面的代码片段所示,对TextView进行了扩展:

 

import android.content.Context;

import android.util.AttributeSet;

import android.widget.TextView;

 

public class MyTextView extends TextView {

 

public MyTextView (Context context, AttributeSet attrs, int defStyle)

{

super(context, attrs, defStyle);

}

 

public MyTextView (Context context) {

super(context);

}

 

public MyTextView (Context context, AttributeSet attrs) {

super(context, attrs);

}

}

 

重写新的View的外观或行为,重写和扩展与想要改变的行为有关的事件处理器。

 

在接下来的代码片段,onDraw方法被重写来修改View的外观,onKeyDown处理器被重写来允许特定的按键响应:

 

public class MyTextView extends TextView {

 

public MyTextView (Context context, AttributeSet ats, int defStyle) {

super(context, ats, defStyle);

}

 

public MyTextView (Context context) {

super(context);

}

 

public MyTextView (Context context, AttributeSet attrs) {

super(context, attrs);

}

 

@Override

public void onDraw(Canvas canvas) {

[ ... 在文字之下画布之上画画... ]

// 使用TextView基类来渲染文字。

super.onDraw(canvas);

[ ... 在文字之上画布之上画画... ]

}

 

@Override

public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {

[ ... 执行一些特殊的处理 ... ]

[ ... 基于特定的按键按下 ... ]

// 使用现有的功能,通过基类的实现来响应按键按下事件。

return super.onKeyDown(keyCode, keyEvent);

}

}

 

View中的UI事件处理器将在本章稍后部分详细介绍。

转载于:https://www.cnblogs.com/xirihanlin/archive/2009/07/22/1528353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值