Кнопка рисования Android на холсте с пользовательским представлением?
Как я могу нарисовать кнопку поверх холста в пользовательском представлении? (Предпочтительно, в середине справа) Есть ли что-то, что я должен вызвать, прежде чем делать button.draw(canvas)?
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);
}
}
Спасибо за ваше время
Ответы
Ответ 1
Вы не можете вставить кнопку в холст. Canvas - это интерфейс для растрового изображения или растрового буфера для представления. Вы можете рисовать только другие растровые изображения или пиксели, а не вставлять объект или виджет.
Есть несколько решений:
-
как предложил Николай, используйте FrameLayout и создайте два слоя (представления): сначала создайте свое собственное представление и второе LinerView или RelativeView, которое появится сверху, где вы можете иметь кнопки и т.д.
-
нарисуйте изображение буттона на холсте, а затем используйте onTouchEvent в своем пользовательском представлении и проверьте координаты касания, затем сделайте что-нибудь... пример для onTouchEvent здесь: Сделать определенную область растрового изображения прозрачной на ощупь
Ответ 2
Зачем вам нужно нарисовать кнопку самостоятельно? Используйте FrameLayout и просто наложите кнопку на свой пользовательский вид.
Ответ 3
Попробуйте это
public onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
pauseButton.draw(canvas);
canvas.restore();
}