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设备都可能具有完全不同的键盘布局,因此我怀疑将其绘制为特别有效或可移植的……)

10-06 07:01