有KeyboardView
类在内部使用Canvas
类,具体方法Canvas.DrawText
机器人。该方法只能绘制一条线。我需要它画两条线。如何覆盖内部使用的类的方法?
Java可能会以某种方式覆盖Canvas.DrawText
,这样KeyboardView
将使用覆盖的方法?
有什么方法来实现requried行为无KeyboardView
从头开始全部重写?
有KeyboardView
类在内部使用Canvas
类,具体方法Canvas.DrawText
机器人。该方法只能绘制一条线。我需要它画两条线。如何覆盖内部使用的类的方法?
Java可能会以某种方式覆盖Canvas.DrawText
,这样KeyboardView
将使用覆盖的方法?
有什么方法来实现requried行为无KeyboardView
从头开始全部重写?
如果在KeyboardView
内部实际存在另一个Canvas
实例,则必须直接扩展KeyboardView
类。 (public class MyFancyKeyboardView extends KeyboardView
)
但是,它看起来像它有一个框架所调用的View.onDraw(Canvas)
方法的实现,并提供了一个外部的Canvas
。如果你能包你自己的View
的里面,你也许能够提供自己onDraw
调用了一个为KeyboardView
。
private KeyboardView wrappedKeyboardView;
public void onDraw (Canvas canvas) {
wrappedKeyboardView.onDraw (canvas);
doMoreDrawing (canvas);
}
(请记住,当然,每一个Android设备容易有一个完全不同的键盘布局,所以我怀疑,在它是特别有效或便携式绘图...)
关于你对键盘布局的点评:KeyboardView类是用于定义了自己的布局定制键盘类似的组件一个奇怪的内置。它与系统键盘无关。例如,它经常用于计算器应用程序。 – 2011-12-22 18:45:37
Bah,对不起,我误解了O :-)在任何情况下我都没有惹过它。只是根据我的答复,在班级的签名和一般猜测... – BRFennPocock 2011-12-22 19:06:04
您将不得不重写KeyboardView
的方法,该方法使Canvas
类实例化,以使其创建类的实例。
在KeyboardView
类中,只有方法onBufferDraw
使用画布,并且它也立即生效。很不好,这种方法非常大。
如果该类不提供一种方式来指定一个Canvas的子类,或者如果它不提供行为扩展点,那么没有,但是:一个全重写不太可能是必要的,如果你瞄准特定的功能。
相反,子类的观点,只有重新实现你需要改变的功能,并使用您的视图子类。
你意味着[该类](http://www.devdaily.com/java/jwarehouse/android/core/java/android/inputmethodservice/KeyboardView.java.shtml)? – Yogu 2011-12-22 14:56:44
是的,我的意思是那堂课。 – 2011-12-22 15:05:04