Добавить кнопку для вызова onDraw в Android - PullRequest
2 голосов
/ 05 июня 2011

Я использую приведенный ниже код для рисования простой 2D-графики (которую я нашел в DroidNova - очень полезно!), И я хотел бы добавить кнопку, которую я определил в файле XML (имя строки и местоположение). Я не вижу, как добавить кнопку на экран (все еще показывая графику из вызова onDraw ...

Обновление

Я обновил код ниже, основываясь на ответе. Я могу нарисовать прямоугольник, но он не показывает кнопку.

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Drawresult();
    }

    protected void Drawresult() {
        // Create a new linear layout to display out custom graphics and a button.
        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

        // Add our custom panel.
        mainLayout.addView(new Panel(this));

        // Create and setup our button.
        Button myButton = new Button(this);
        myButton.setText("Tap Me");
        myButton.setOnClickListener(new OnClickListener() {

             @Override
             public void onClick(View v) {
                 finish();
             }
         });

         // Add our button to the layout.
         mainLayout.addView(myButton);

         // Set this activity's content to our layout.
         setContentView(mainLayout);
     }

     class Panel extends View {
         public Panel(Context context) {
             super(context);
         }

         @Override
         public void onDraw(Canvas canvas) {

             Rect r = new Rect();
             r.set(60, 60, 260, 77);

             Paint paint = new Paint();
             paint.setColor(Color.WHITE);
             paint.setStyle(Paint.Style.STROKE);
             paint.setStrokeWidth(3);

             canvas.drawRect(r, paint);
         }
     }
}

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Измените свой конструктор на это (Предполагая, что у вас есть подклассы Activity. В противном случае опубликуйте больше вашего кода):

protected void Drawresult() {
    // Create a new linear layout to display out custom graphics and a button
    LinearLayout mainLayout = new LinearLayout(this);
    mainLayout.setOrientation(LinearLayout.VERTICAL);

    // Add our custom panel
    mainLayout.addView(new Panel(this));

    // Create and setup our button 
    Button myButton = new Button(this);
    myButton.setText("Tap Me");
    myButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // Put your click logic here
        }
    });

    // Add our button to the layout
    mainLayout.addView(myButton);

    // Set this activity's content to our layout
    setContentView(mainLayout);
}
0 голосов
/ 05 июня 2011

Предполагая, что DrawResult расширяет активность, вам нужно добавить LinearLayout вместо Панели и добавить Button и Panel в этот макет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...