2011-08-31 16 views
14

Aquí es lo que quiero hacer: Tengo esta xml escala:Android: ¿Es posible escalar un xml drawable?

<?xml version="1.0" encoding="utf-8"?> 
<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/mydrawable" 
    android:scaleGravity="bottom" 
    android:scaleHeight="50%" /> 

y quiero usarlo con este xml dibujable:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <gradient android:startColor="#FFFFFFFF" 
       android:endColor="#FFFF0000" 
       android:angle="90" /> 
     </shape> 
    </item> 
</layer-list> 

Entonces me puse el xml escala como fondo para un LinearLayout, pero no veo nada. ¿Me estoy perdiendo algo o no es posible hacerlo (con XML)?

+1

BTW El elemento de nivel superior puede ser 'forma' sin necesidad de una lista de capas para rodearlo. Además, ¿en qué directorio de recursos están estos archivos? – Greyson

+0

Lo siento, me acabo de dar cuenta de que estoy entrando en este _extremely_ tarde. – Greyson

+0

@michelemarcon: ¿Terminaste con algo? – Behnam

Respuesta

3

Este es un problema con el objeto ScaleDrawable que no se puede resolver en XML.

Pero es fácil, simplemente haga lo siguiente:

// Get the scale drawable from your resources 
ScaleDrawable scaleDraw = (ScaleDrawable)getResources().getDrawable(R.drawable.background_scale); 
// set the Level to 1 (or anything higher than 0) 
scaleDraw.setLevel(1); 

// Now assign the drawable where you need it 
layout.setBackgroundDrawable(scaleDraw); 

He probado el código de uso de esta solución y funcionó bien.

Cuestiones relacionadas