Android绘图按钮到自定义视图的画布?

时间:2011-08-13 02:09:44

标签: android button canvas custom-view

如何在自定义视图中在画布顶部绘制按钮? (最好是在中间右侧)在做button.draw(画布)之前是否有必须调用的东西?

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

感谢您的时间

3 个答案:

答案 0 :(得分:15)

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

有一些解决方案:

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

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

答案 1 :(得分:4)

为什么你需要自己画按钮?使用FrameLayout,只需将按钮覆盖在自定义视图上即可。

答案 2 :(得分:-1)

试试这个

public onDraw(Canvas canvas) {
       super.onDraw(canvas);
       canvas.save();
       pauseButton.draw(canvas);
       canvas.restore();
}