2011-06-07 14 views
35

Tengo esta dificultad para tener una esquina redondeada y una imagen de fondo en mi LinearLayout.¿Cómo usar una forma dibujable junto con una imagen?

Sé que puedo achive la esquina redondeada mediante el uso de la forma XML estirable, pero si pongo el dibujable forma que el fondo de mi LinearLayout con android:[email protected]/rounded_corner entonces no se puede asignar cualquier imagen que se usará como fondo.

¿Cómo puedo obtener una esquina redondeada con una imagen de fondo en mi LinearLayout? Cualquier ayuda sería apreciada. ¡Gracias!

Respuesta

32

Puede usar LayerDrawable, que podría contener tantas capas (formas o imágenes) como necesite. Puede crearlo como recurso o programáticamente.

<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> 
+2

Gracias por la respuesta woodshy :) Lo intenté pero no funciona como esperaba. Simplemente se colocan uno encima del otro y la parte de la esquina de la imagen de fondo sigue siendo visible detrás de la forma de la esquina redondeada. ¿Alguna idea de cómo hacer para usar la imagen de fondo mientras se mantiene la forma de la esquina redondeada? –

+0

¿por qué no puedes crear una imagen con esquinas redondeadas? – woodshy

+3

Esa sería la manera más fácil, pero quiero evitar eso si pudiera. El hecho es que la imagen está hecha por otra persona y si es posible, quiero hacerlo sin pedirle que cambie la imagen. –

3

para los que busca una respuesta diferente

en el 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> 

en el alcrear o general

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

en función

@Override 
    public Drawable getDrawable(int position) { 

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