2010-11-30 6 views
4

Comment puis-je créer ce dessinable par programmation?Créer un objet LayerDrawable par programme

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <bitmap android:src="@drawable/android_red" 
    android:gravity="center" /> 
</item> 
<item android:top="10dp" android:left="10dp"> 
    <bitmap android:src="@drawable/android_green" 
    android:gravity="center" /> 
</item> 
<item android:top="20dp" android:left="20dp"> 
    <bitmap android:src="@drawable/android_blue" 
    android:gravity="center" /> 
</item> 

Merci beaucoup

Répondre

9

Il est à peu près complètement décrit here. Créez simplement une nouvelle instance de LayerDrawable en transmettant à son constructeur un tableau d'objets Drawable.

+1

Je suis intéressé par la façon de mettre la gauche, à droite, en haut, en bas des paramètres et la gravité. – Gratzi

+0

@Gratzi: Il suffit de lire la page de référence car tout ce dont vous avez besoin est là ... toujours. Check it out http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html#setLayerInset(int, int, int, int, int) –

+0

Vous avez raison. J'ai omis cette méthode. Merci beaucoup! – Gratzi

17

Ce n'était pas trop évident jusqu'à ce que j'ai lu les commentaires sous la réponse @ OctavianDamiean. Son lien hypertexte est rompu, mais afin de programmer un itemandroid:top, android:bottom, etc, référence LayerDrawable méthode setLayerInset.

setLayerInset (int index, int l, int t, int r, int b) 

int index - l'indice de la Drawable sur le tableau Drawable (que vous avez passé en tant que paramètre du constructeur de LayerDrawable) que vous souhaitez modifier.
int l, t, r, b - Vous définissez ces paramètres comme vous le feriez dans android:left, android:top, etc

+0

vous êtes un épargnant de vie – inthy

Questions connexes