web-dev-qa-db-ja.com

Androidカスタムビューでキャンバスにボタンを描画しますか?

カスタムビューでキャンバスの上にボタンを描画するにはどうすればよいですか? (できれば右側中央)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);
    }
    }

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

12
unknownone

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

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

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

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

15
Lumis

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

4
Nikolay Elenkov