カスタムビューでキャンバスの上にボタンを描画するにはどうすればよいですか? (できれば右側中央)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);
}
}
御時間ありがとうございます
キャンバスにボタンを挿入することはできません。 Canvasは、ビットマップのインターフェイスまたはビューのビットマップバッファです。オブジェクトやウィジェットを挿入することはできず、他のビットマップまたはピクセルのみを描画できます。
いくつかの解決策があります:
nikolayが提案したように、FrameLayoutを使用して、2つのレイヤー(ビュー)を作成します。最初はカスタムビューで、2番目はLinerViewまたはRelativeViewです。ボタンなどができるところ
canvasにボタンの画像を描画し、カスタムビューでonTouchEventを使用して、タッチの座標をテストしてから、何かを実行します...例onTouchEventの場合: ビットマップの特定の領域をタッチ時に透明にします
なぜ自分でボタンを描く必要があるのですか? FrameLayoutを使用して、カスタムビューにボタンをオーバーレイするだけです。