2011-08-13 3 views
11

Comment puis-je dessiner un bouton sur le dessus de la toile dans une vue personnalisée? (De préférence sur le côté médium-droit) Y at-il quelque chose que je dois appeler avant de faire le bouton.draw (toile)?Bouton de dessin Android à la toile avec vue personnalisée?

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); 
    } 
    } 

Merci pour votre temps

+0

super.onDraw (canvas); – confucius

+0

'super.onDraw (canvas);' n'a pas résolu le problème? @Nammari – unknownone

+0

Quelle est la situation actuelle. Est-ce qu'il dessine atall? ou dessiner au mauvais endroit? – Ronnie

Répondre

14

Vous ne pouvez pas insérer un bouton en toile. Canvas est une interface pour bitmap ou un tampon bitmap pour une vue. Vous pouvez uniquement dessiner d'autres bitmaps ou pixels, sans insérer d'objet ou de widget.

Il existe des solutions:

  1. comme Nikolay suggéré, utiliser un FrameLayout et créer deux couches (vues), d'abord votre vue personnalisée et le second LinerView ou RelativeView, qui entreront sur le dessus, où vous pouvez avoir des boutons, etc

  2. dessiner une image d'un buttun sur toile puis utilisez onTouchEvent dans votre vue personnalisée et test pour les coordonnées du contact, puis faire quelque chose ... un exemple pour onTouchEvent ici: Make certain area of bitmap transparent on touch

+0

Comment ajouter ma vue personnalisée au fichier xml? Merci pour votre réponse – unknownone

+1

C'est une longue histoire, vous devez chercher des exemples ... mais fondamentalement, vous créez une nouvelle balise comme .... dans xml et puis créez une nouvelle classe appelée MyView extends View qui a un constructeur MyView (Context context, AttributeSet attrs) {super (context, attrs); ....} dans cet exemple il suffit d'ajouter le constructeur que j'ai mentionné: http://stackoverflow.com/questions/6308106/view-inflation-and-custom-views – Lumis

+0

Ok Merci beaucoup! – unknownone

4

Pourquoi avez-vous besoin de tirer sur le bouton vous? Utilisez un FrameLayout et avez simplement le bouton superposé sur votre vue personnalisée.

-1

Essayez cette

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