Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓按钮在画布中不起作用_Android - Fatal编程技术网

Android 安卓按钮在画布中不起作用

Android 安卓按钮在画布中不起作用,android,Android,按钮在画布中不起作用。您需要在邮件中更改/添加呼叫者什么?按钮已创建,但按下时不响应。画布是否可能位于按钮上方 public class ButtonInCanvas extends AppCompatActivity implements View.OnClickListener { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCre

按钮在画布中不起作用。您需要在邮件中更改/添加呼叫者什么?按钮已创建,但按下时不响应。画布是否可能位于按钮上方

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();
    }
}
让我们参考链接

不能将按钮插入画布。画布是位图的界面或视图的位图缓冲区。只能在其中绘制其他位图或像素,不能插入对象或小部件

有一些解决方案:

  • 正如Nikolay所建议的,使用框架布局并创建两个层(视图),第一个是自定义视图,第二个是LinerView或RelativeView,它将位于顶部,您可以在上面设置按钮等

  • 在画布上绘制一个Button图像,然后在自定义视图中使用onTouchEvent,测试触摸的坐标,然后做一些事情…onTouchEvent的示例如下:

  • 让我们参考链接

    不能将按钮插入画布。画布是位图的界面或视图的位图缓冲区。只能在其中绘制其他位图或像素,不能插入对象或小部件

    有一些解决方案:

  • 正如Nikolay所建议的,使用框架布局并创建两个层(视图),第一个是自定义视图,第二个是LinerView或RelativeView,它将位于顶部,您可以在上面设置按钮等

  • 在画布上绘制一个Button图像,然后在自定义视图中使用onTouchEvent,测试触摸的坐标,然后做一些事情…onTouchEvent的示例如下:


  • 您只需使用代码在画布中绘制一个按钮图像。您不需要将其添加到画布中。画布不是用于保存子视图的视图组。要处理点击,您必须将onClickListener添加到
    btincavas
    视图中。但无论如何,你的代码看起来很奇怪。为什么需要在画布上添加按钮?只需使用代码在画布上绘制一个按钮图像。您不需要将其添加到画布中。画布不是用于保存子视图的视图组。要处理点击,您必须将onClickListener添加到
    btincavas
    视图中。但无论如何,你的代码看起来很奇怪。为什么需要在画布上添加按钮?