Android中有一个类KeyboardView
在内部使用类Canvas
,特别是方法Canvas.DrawText
。该方法只能画一条线。我需要它画两条线。
在Java中有可能以某种方式覆盖Canvas.DrawText
,以便KeyboardView
使用覆盖的方法吗?
是否有任何方法可以实现要求的行为而无需从头开始完全重写KeyboardView
?
最佳答案
如果Canvas
中实际上还有另一个KeyboardView
实例,则必须直接扩展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设备都可能具有完全不同的键盘布局,因此我怀疑将其绘制为特别有效或可移植的……)