2011-09-01 7 views
14

tengo el siguiente conjunto estirable como fondo:, fondo, una capa lista androide y elemento de mapa de bits escalable

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <bitmap android:src="@drawable/base_bg" 
    android:gravity="bottom" /> 
</item> 
<item android:top="10dp" android:left="10dp"> 
    <bitmap android:src="@drawable/decoration1" 
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" /> 
</item> 
<item android:top="10dp" android:left="10dp"> 
    <bitmap android:src="@drawable/decoration2" 
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" 
    /> 
</item> 
</layer-list> 

Muestra todos los mapas de bits (base_bg, decoration1, y decoration2), pero no puedo encontrar una forma de modificar el tamaño de ellos. Me gustaría tener el fondo principal y, además, las decoraciones que tendrán distintos tamaños en función de los ppp. ¿Hay una manera simple de hacerlo, o realmente tengo que tener un montón de "decoraciones" para diferentes dpi? ¡No es bueno y me gustaría tener la opción de escala/cambio de tamaño en su lugar! Los atributos android:width y android:height son algo que me gustaría encontrar, pero sé que no funciona. Por el momento estoy usando diferentes versiones para diferentes DPI pero esperaba que pudiera ser un poco más amigable para el usuario.

+0

posiblemente debería considerar un diseño de marco en su lugar: luego puede modificar discretamente cada vista. – RichieHH

Respuesta

9

No sé cómo son estas imágenes, pero, por ejemplo, puede hacer una imagen grande y usarla en un elemento android: campo dibujable, de esta manera la imagen toma el tamaño del elemento.

<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <bitmap android:src="@drawable/base_bg" 
    android:gravity="bottom" /> 
</item> 
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration1"> 
</item> 
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration2"> 
</item> 
</layer-list> 

Otras soluciones podrían ser de hacerlo mediante programación con LayerDrawable (here) y disponibles (here) clases. Puede construir el Objeto de Capa con 3 Objetos Drawable y luego elegir el tamaño correcto en cada objeto Drawable con el método setBounds (Rect).

Espero que te ayude.

+0

capas [1] .setBounds (4, 4, 4, 4); <- no funciona -.- –

Cuestiones relacionadas