web-dev-qa-db-fra.com

Comment utiliser une forme dessinable avec une image?

J'ai du mal à avoir à la fois un coin arrondi et une image d'arrière-plan dans mon LinearLayout.

Je sais que je peux obtenir le coin arrondi en utilisant le XML dessinable de forme, mais si je mets la forme dessinable comme arrière-plan de mon LinearLayout avec Android:background=@drawable/rounded_corner alors je ne peux attribuer aucune image à utiliser comme arrière-plan.

Comment puis-je obtenir à la fois un coin arrondi avec une image d'arrière-plan dans mon LinearLayout? Toute aide serait appréciée. Merci!

35

Vous pouvez utiliser LayerDrawable , qui peut contenir autant de calques (formes ou images) que nécessaire. Vous pouvez le créer en tant que ressource ou par programme.

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@drawable/rounded_corners" Android:id="@+id/rounded_corners"/>
    <item Android:drawable="@drawable/additional_image" Android:id="@+id/additional_image" />
</layer-list>
34
woodshy

pour ceux qui cherchent une réponse différente

dans le xml

<string-array name="ulke_isimleri">
    <item>kan</item>
    <item>kebapeli</item>
</string-array>

<array name="ulke_gorselleri">
    <item>@drawable/kan1</item>
    <item>@drawable/esyalar_kebap_adana</item>
</array>

dans la création ou générale

 String[] ulkeAdlari =getResources().getStringArray(R.array.ulke_isimleri);
 TypedArray ulkeGorselleri = getResources().obtainTypedArray(R.array.ulke_gorselleri);

en tant que fonction

 @Override
    public Drawable getDrawable(int position) {

         Drawable[] drawable = new Drawable[] { 
                 ulkeGorseli.getDrawable(position   ) 
                 ,
                 new TextDrawable(ulkeAdlari[ position   ]  )
         };
        return new LayerDrawable(drawable);
    }
3
alp