2016-07-06 2 views
1

Mon CustomView dessine des polygones et le title text est situé au centre d'une vue. Comme l'application s'exécute, j'ai besoin de changer le texte du titre de ces vues fréquemment. Bien sûr, je peux invalider après avoir défini un nouveau texte afin que l'application puisse tout redessiner - polygones, couleurs, et enfin le nouveau texte - mais je me demande simplement s'il y a une manière intelligente qui invalide seulement le texte du titre polygons intacte. Le code actuel ressemble à ceci:Est-il possible d'invalider le texte seulement, mais pas l'image de fond sur une vue personnalisée sur Android?

public CustomView extends View { 

    private Path mPolygon1; 
    private Path mPolygon2; 
    // .. more polygons 

    private String mTitleText; 

    @Override 
    protected void onDraw(Canvas canvas) { 

     // Draws all images 
     canvas.drawPath(mPolygon1, mPaint); 
     canvas.drawPath(mPolygon2, mPaint); 
     // ... more polygon drawing 

     canvas.drawText(mTitleText, 0, mTitleText.length(), mTextPaint); 
    } 

    public void setTitle(String title) { 
     mTitleText = title; 
     invalidate();   // more clever way???? 
    } 
} 

Répondre

0

Vous pouvez utiliser invalidate (Rect) ou invalider (gauche, haut, droite, bas)

Here is a link pour plus de détails

+0

Merci beaucoup. Je ne savais pas qu'une telle méthode existe. Parfois, il y a trop de méthodes pour un seul objet de sorte qu'il est difficile de trouver la bonne méthode que je cherche .... –

+0

C'est l'un des problèmes d'Android, quant à moi. Il y a des tonnes de méthodes utiles. Mais il est difficile de se souvenir de quoi que ce soit. –