2011-02-06 2 views
0

J'essaie d'afficher un LayerDrawable comme image ImageButton. Toutes les couches doivent avoir des valeurs supérieures différentes. tel que top += 10;. Pour cela, j'ai utilisé setLayerInset avec des éléments de calque Drawable mais il a étiré les images. J'ai également essayé avec différents paramètres et il a juste affiché d'autres dispositions stupides.Android ImageButton avec LayerDrawable Image

Après la tentative de setLayerInset j'ai utilisé InsetDrawable, donnant le paramètre haut son propre constructeur:

new InsetDrawable(resources.getDrawable(R.drawable.soldier), 0, layerTop, 0, 0); 

cette fois-ci, les sommets regarder OK, mais ImageButton affiche une très petite zone de celui-ci.

mise en page de base, Disons que ceci est mon image,

 
*---* 
| | 
| | 
--- 

la mise en page doit être,

 
*---* 
| | 
*---* 
| | 
*---* 
| | 
*---* 
| | 
| | 
--- 

Répondre

0

Je mis la android:scaleType="fitStart" et a changé la ligne ci-dessous et il fonctionne comme un charme.

new InsetDrawable(resources.getDrawable(R.drawable.soldier), 0, layerTop,0,-layerTop); 

Maintenant, j'ai d'autres questions,

Tout d'abord, comme vous pouvez le voir, je suis en train de créer une nouvelle instance pour chaque couches. Si je ne crée qu'un seul objet Drawable et que je le mets à tous les éléments du tableau qui seront utilisés pour créer la fonction LayerDrawable et que j'utilise la fonction layerDrawable.setLayerInset pour définir les propriétés du haut et du bas, serait-il plus efficace.

Et l'autre si l'objet LayerDrawable a plus d'éléments plus grand que l'imageButton, il affiche toujours les images. Y at-il un paramètre tel que CSS overflow:hidden ou quelque chose?

Merci.