2010-04-25 5 views
0

J'essaie de créer un drawable dans le code et de changer la couleur en fonction de certains critères. Je peux le faire fonctionner mais il ne veut pas me laisser définir le rembourrage sur la vue. Toute aide serait appréciée.Android Dessiner la question

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

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="50px" 
    android:layout_height="fill_parent" 
/> 

<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="17px" 
    android:textSize="28sp" 
/> 

  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.setBackgroundDrawable(mDrawable); 
     icon.setPadding(5, 5, 5, 5); 

Si je mets le rembourrage en XML juste l'ignore.

Merci, Rob

Répondre

1

Essayez réglage padding pour la ShapeDrawable (link).

Et encore une chose est, rembourrage déplacera le contenu de la vue d'image pas l'arrière-plan (c'est-à-dire la vue de l'image elle-même). Vous définissez le dessin en tant qu'arrière-plan ImageView.

Utilisez la fonction setImageDrawable() pour obtenir l'affichage de l'image setPadding().

+0

Merci Karan. Cela m'a aidé mais quand j'essaie et setImageDrawable() fonction je ne peux rien voir. Je comprends pourquoi mon rembourrage ne fonctionne pas maintenant mais je suis encore un peu incertain quant à savoir pourquoi mon Drawable ne s'affichera pas en ImageDrawable, mais en arrière-plan. – tgai

+0

Je vais dire que cette question est répondue et poster une nouvelle question sur mes autres préoccupations. Merci! – tgai