Кнопка рисования Android на холсте с пользовательским видом - PullRequest
11 голосов
/ 13 августа 2011

Как нарисовать кнопку поверх холста в пользовательском представлении? (Желательно с правой стороны в середине) Есть ли что-то, что я должен позвонить, прежде чем делать 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);
    }
    }

Спасибо за ваше время

Ответы [ 3 ]

15 голосов
/ 13 августа 2011

Вы не можете вставить кнопку в холст. Canvas - это интерфейс для растрового изображения или растровый буфер для представления. Вы можете рисовать только другое растровое изображение или пиксели, но не вставлять объект или виджет.

Есть несколько решений:

  1. , как предложил Николай, используйте FrameLayout и создайте два слоя (представления), первый пользовательский вид и второй LinerView или RelativeView, который появится сверху, где у вас могут быть кнопки и т. Д.

  2. нарисуйте изображение бутуна на Canvas, затем используйте onTouchEvent в своем пользовательском представлении и проверьте координаты касания, затем сделайте что-нибудь ... пример для onTouchEvent здесь: Сделайте определенную область растрового изображения прозрачной на ощупь

4 голосов
/ 13 августа 2011

Зачем вам нужно нарисовать кнопку самостоятельно? Используйте FrameLayout и просто наложите кнопку на ваш пользовательский вид.

0 голосов
/ 13 августа 2011

Попробуйте это

public onDraw(Canvas canvas) {
       super.onDraw(canvas);
       canvas.save();
       pauseButton.draw(canvas);
       canvas.restore();
}
...