2016-08-30 19 views
1

ボタンはキャンバスでは機能しません。発信者をメッセージに変更/追加する必要はありますか?ボタンは作成されますが、を押すと反応しません。キャンバスがボタンの上にある可能性はありますか?Android。キャンバスでボタンが機能しない

public class ButtonInCanvas extends AppCompatActivity implements View.OnClickListener { 
Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     button = new Button(ButtonInCanvas.this); 
     button.setOnClickListener(this); 
     button.setText("OK!"); 
     setContentView(new BtInCanvas(ButtonInCanvas.this)); 
    } 
    public class BtInCanvas extends View { 

     public BtInCanvas(Context context) { 

      super(context); 
     } 
     public void onDraw(Canvas canvas){ 
      button.layout(50,50,300,300); 
      button.draw(canvas); 
     } 
    } 

    @Override 
    public void onClick(View v) { 

     Toast.makeText(this,"OK!",Toast.LENGTH_LONG).show(); 
    } 
} 
+0

をあなたは自分のコードを使用してキャンバスにボタン画像を描画します。キャンバスに追加しないでください。キャンバスはchildViewを保持するViewGroupではありません。クリックを処理するには、あなたの 'BtInCanvas'ビューにonClickListenerを追加する必要があります。しかし、とにかくあなたのコードは非常に奇妙なもののように見えます。なぜボタンをキャンバスに追加する必要がありますか? –

答えて

0

「あなたはキャンバスの中にボタンを挿入することはできません。キャンバスは、ビットマップまたはビューのビットマップバッファするためのインタフェースである。あなたはそれだけで、他のビットマップまたはピクセルを描画することができ、リンクAndroid drawing button to canvas with custom view?

を参照してみましょう。、オブジェクトまたはウィジェットを挿入

いくつかの解決策がありません。

  1. ニコライはFrameLaを使用し、提案されているよう YOUTとあなたがボタンなど

  2. onTouchEventを使用し、次にキャンバス上buttunのイメージを描くことができます二つの層上に来る(ビュー)、最初のカスタムビューと第二LinerViewまたはRelativeViewを作成、タッチの座標のカスタムビューとテストで、その後、何か...ここonTouchEventのための例を実行します。Make certain area of bitmap transparent on touch

関連する問題