Android系统。按钮在Canvas中不起作用

时间:2016-08-30 07:06:57

标签: android

按钮在Canvas中不起作用。您需要更改/添加呼叫者的消息?按钮已创建,但在您按下时没有响应。画布是否可能在按钮上?

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();
    }
}

1 个答案:

答案 0 :(得分:0)

请参阅链接Android drawing button to canvas with custom view?

“您无法在画布中插入按钮。画布是位图的接口或视图的位图缓冲区。您只能在其中绘制其他位图或像素,而不是插入对象或小部件。

有一些解决方案:

  1. 正如Nikolay建议的那样,使用 FrameLayout 并创建两个图层(视图),首先是自定义视图,第二个是LinerView或RelativeView,它们将位于顶部,您可以在其中拥有按钮等

  2. 在Canvas上绘制一个buttun的图像,然后在自定义视图中使用 onTouchEvent 并测试触摸的坐标,然后执行某些操作...这里的onTouchEvent示例:{ {3}}“