12

カスタムビューでキャンバスの上にボタンを描画するにはどうすればよいですか?(できれば右側中央)button.draw(canvas)を実行する前に呼び出す必要があるものはありますか?

    public class MyClass extends View {
    public Simulation(Context context) {
            super(context);
            pauseButton.setText("TestButton");
            pauseButton.setClickable(true);
            pauseButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            Log.i(TAG, "Button Pressed!");
            }
            });
    public onDraw(Canvas canvas) {
           super.onDraw(canvas);
           pauseButton.draw(canvas);
    }
    }

御時間ありがとうございます

4

3 に答える 3

16

キャンバスにボタンを挿入することはできません。Canvasは、ビューのビットマップまたはビットマップバッファのインターフェイスです。オブジェクトやウィジェットを挿入することはできず、他のビットマップまたはピクセルのみを描画できます。

いくつかの解決策があります:

  1. Nikolayが提案したように、FrameLayoutを使用して、2つのレイヤー(ビュー)を作成します。最初はカスタムビューで、2番目はLinerViewまたはRelativeViewで、ボタンなどを配置できます。

  2. Canvasにボタンの画像を描画し、カスタムビューでonTouchEventを使用してタッチの座標をテストし、次に何かを実行します...ここでのonTouchEventの例:タッチ時にビットマップの特定の領域を透明にします

于 2011-08-13T13:40:42.027 に答える
6

なぜ自分でボタンを描く必要があるのですか?FrameLayoutを使用して、カスタムビューにボタンをオーバーレイするだけです。

于 2011-08-13T05:03:30.977 に答える
-1

これを試して

public onDraw(Canvas canvas) {
       super.onDraw(canvas);
       canvas.save();
       pauseButton.draw(canvas);
       canvas.restore();
}
于 2011-08-13T05:34:22.180 に答える