2012-03-25 3 views
0

J'ai une vue où je dessine un certain nombre de lignes qui peuvent changer lors de l'exécution. C'est ma fonction onDraw:Affichage ne pas mettre à jour l'écran

@Override 
protected void onDraw(Canvas canvas) { 

    mainShape.draw(canvas); 
    //canvas.drawLine(0,0, 100, 100, mStrokePaint); 
    for (Rect dr : mLines) { 
     canvas.drawLine(dr.left, dr.top, dr.right, dr.bottom, mStrokePaint); 
    } 
} 

Cependant, lorsque je change le nombre de lignes, cela ne se reflète pas sur l'écran. En déboguant, j'ai vérifié qu'il modifiait bien le nombre d'éléments Rect dans les mLines, et qu'il faisait en fait le bon nombre d'itérations dans la boucle for.

Mais d'une certaine manière, l'écran affiche le nombre initial de lignes (3). Est-ce que je manque quelque chose?

Répondre

2

essayez d'appeler invalidate() à la fin de votre onDraw. Cela force la vue à se mettre à jour

+0

qui a fait l'affaire. Merci! –