Я пытаюсь нарисовать фигуру на холсте и получить информацию о кликах, которые пользователь выполняет на этом холсте.
Я создал класс, который расширяет класс 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 не могут быть «кликабельными», но я ожидал, что это сработает, так как я расширяю кнопку (которая является представлением и «кликабельной»).
Возможно ли это?Если не так, можете ли вы дать мне какой-нибудь способ получить информацию о координатах экрана, которые были нажаты на холсте или представлении?
Заранее спасибо.