Кнопка рисования 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();
}