如何在自定义视图中在画布顶部绘制按钮? (最好是在中间右侧)在做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);
}
}
感谢您的时间
答案 0 :(得分:15)
您无法在画布中插入按钮。 Canvas是位图的接口或视图的位图缓冲区。您只能在其中绘制其他位图或像素,而不能插入对象或小部件。
有一些解决方案:
正如Nikolay建议的那样,使用 FrameLayout 并创建两个图层(视图),首先是自定义视图,第二个是LinerView或RelativeView,它们将位于顶部,您可以在其中拥有按钮等
在Canvas上绘制一个buttun的图像,然后在自定义视图中使用 onTouchEvent 并测试触摸的坐标,然后执行某些操作...这里的onTouchEvent示例:{ {3}}
答案 1 :(得分:4)
为什么你需要自己画按钮?使用FrameLayout,只需将按钮覆盖在自定义视图上即可。
答案 2 :(得分:-1)
试试这个
public onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
pauseButton.draw(canvas);
canvas.restore();
}