如何使用 ShapeDrawable 创建可点击按钮?
Posted
技术标签:
【中文标题】如何使用 ShapeDrawable 创建可点击按钮?【英文标题】:How-to create a clickable Button with a ShapeDrawable? 【发布时间】:2010-08-17 22:43:51 【问题描述】:我正在尝试在 Canvas 上绘制一个形状并获取有关用户在该 Canvas 上执行的点击的信息。
我创建了一个扩展 Button 类的类。
class CustomDrawableButton extends Button
private final ShapeDrawable mDrawable;
int x = 50;
int y = 50;
int width = 30;
int height = 30;
public CustomDrawableButton (Context context)
super(context);
mDrawable = new ShapeDrawable (new OvalShape ());
mDrawable.getPaint().setColor(Color.GREEN);
mDrawable.setBounds(x, y, x + width, y + height);
protected void onDraw(Canvas canvas)
mDrawable.draw(canvas);
然后,在同样扩展 View 的类中,我添加了实例化和监听器:
CustomDrawableButton mCustomDrawableButton = new CustomDrawableButton(getBaseContext());
layout.addView(mCustomDrawableButton);
mCustomDrawableButton.draw(canvas);
mCustomDrawableButton.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
System.out.println("Yey clicked");
Toast.makeText(view.getContext(), "Yey", Toast.LENGTH_LONG).show();
);
执行此操作时,它无法检测到对图像/按钮的点击。我已经读过 ShapeDrawable 对象不能是“可点击的”,但我希望这可以工作,因为我正在扩展按钮(这是一个视图并且是“可点击的”)。
这可能吗?如果不是这种方式,您能否指导我以某种方式获取有关在 Canvas 或 View 上按下的屏幕坐标的信息?
提前致谢。
【问题讨论】:
【参考方案1】:经过一番搜索,这里有一个教程,展示了如何通过获取触摸屏位置来完成它。
http://marakana.com/tutorials/android/2d-graphics-example.html
仍然不知道如何通过自动将触摸事件绑定到按钮来做到这一点。如果有人知道怎么做,请说出来。
谢谢。
【讨论】:
以上是关于如何使用 ShapeDrawable 创建可点击按钮?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android ShapeDrawable 以编程方式绘制圆