2011-05-15 4 views
0

J'essaie de placer un objet ShapeDrawable dans une cellule TableLayout. Comme le suggère la documentation here créer une vue personnalisée mCustomView puis ajouter la vue sur la TableLayout en faisantShapeDrawable et TableLayout

mRow.addView(mCustomView) 
mTableLayout.addView(mRow) 

Tout fonctionne très bien, aucune erreur mais la forme ne s'affiche pas du tout.

Le code pour créer mon drawable est

icon = new ShapeDrawable(new ArcShape(0, 360)); 
icon.setBounds(0, 0, 20, 20); 
icon.getPaint().setColor(parseColor); 

Répondre

1

Après un peu plus creuser et faire des recherches, il se révèle que le meilleur solution est de passer l'objet ShapeDrawable à un constructeur ImageView puis ajoutez cette vue pour la ligne de table avec quelque chose comme ça

ShapeDrawable icon = new ShapeDrawable(new ArcShape(0, 360)); 
icon.getPaint().setColor(parseColor); 
icon.setIntrinsicHeight(30); 
icon.setIntrinsicWidth(30); 
ImageView iv = new ImageView(this); 
iv.setImageDrawable(icon); 
mRow.addView(iv); 
mTableLayout.addView(mRow) 

Cette solution a aussi l'avantage de se débarrasser de la classe View personnalisée.