2010-05-02 6 views
0

Je tente de créer un dessin en code et de modifier la couleur en fonction de certains critères. Lorsque j'essaie de définir le dessin comme arrière-plan de l'ImageView, il s'affiche mais ne me laisse pas définir de remplissage. J'ai réalisé que j'ai besoin de définir l'image ImageView via la fonction setImageDrawable() afin de pouvoir définir le remplissage.Définition d'une ressource ImageView en tant que dessable

Le problème que je rencontre est que lorsque je l'ai défini via la fonction setImageDrawable() rien n'est affiché.

Voici ce que je l'ai écrit:

<?xml version="1.0" encoding="utf-8"?> 

  ImageView icon = (ImageView) row.findViewById(R.id.icon); 
    ShapeDrawable mDrawable; 

    int x = 0; 
    int y = 0; 
    int width = 50; 
    int height = 50; 

    float[] outerR = new float[] { 12, 12, 12, 12, 12, 12, 12, 12 }; 

    mDrawable = new ShapeDrawable(new RoundRectShape(outerR, null, null)); 
    mDrawable.setBounds(x, y+height, x + width, y); 



    switch(position){ 

    case 0: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 1: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 2: 
    mDrawable.getPaint().setColor(0xff00c000); //Green 
    break; 
    case 3: 
    mDrawable.getPaint().setColor(0xff00c000); //Green 
    break; 
    case 4: 
    mDrawable.getPaint().setColor(0xff0000ff); //Blue 
    break; 
    case 5: 
    mDrawable.getPaint().setColor(0xff0000ff); //Blue 
    break; 
    case 6: 
    mDrawable.getPaint().setColor(0xff696969); //Gray 
    break; 
    case 7: 
    mDrawable.getPaint().setColor(0xff696969); //Gray 
    break; 
    case 8: 
    mDrawable.getPaint().setColor(0xffffff00); //Yellow 
    break; 
    case 9: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 10: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 11: 
    mDrawable.getPaint().setColor(0xff8b4513); //Brown 
    break; 
    case 12: 
    mDrawable.getPaint().setColor(0xffa020f0); //Purple 
    break; 
    case 13: 
    mDrawable.getPaint().setColor(0xffff0000); //Red 
    break; 
    case 14: 
    mDrawable.getPaint().setColor(0xffffd700); //Gold 
    break; 
    case 15: 
    mDrawable.getPaint().setColor(0xffff6600); //Orange 
    break; 
    } 

    icon.setImageDrawable(mDrawable); 
    icon.setPadding(5, 5, 5, 5); 

Il en résulte un espace pour la ImageView, mais pas d'image.

Merci, Rob

Répondre

0

Si vous implémentez la méthode de tirage d'un ImageView personnalisé, vous pouvez simplement dessiner une teinte sur l'image. Pour une belle brillance rose essayer:

@Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     Rect    frame; 
     Paint    paint = new Paint(); 

     paint.setStyle(Style.FILL); 
     paint.setARGB(102 , 255 , 51 , 51); 
     frame = new Rect(0, 0, getWidth(), getHeight()); 
     canvas.drawRect(frame , paint); 
    } 
+0

Je ne suis pas très familier avec tout cela. Pourrais-je encore les faire avec les coins arrondis que j'avais avant? – tgai

Questions connexes