2011-09-29 8 views
14

Tengo tres PNG de 9 parches que juntos forman el fondo de un botón (lado izquierdo, medio, lado derecho). Me gustaría combinar estas tres imágenes juntas en un estirable que puedo especificar como fondo de un botón en XML, algo a lo largo de las líneas de:¿Cómo hago un dibujable desde múltiples imágenes?

res/drawable/button_background.xml:

<?xml version="1.0" encoding="utf-8"?> 
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" 
android:src="@drawable/button_left_side" /> 

<nine-patch android:src="@drawable/button_middle" /> 

<nine-patch android:src="@drawable/button_right_side" /> 

res/layout/main.xml:

<button android:background="@drawable/button_background" /> 

¿Es esto posible?

Respuesta

33

Después de algunos intentos de prueba y error, pude resolver el problema de manera satisfactoria. Simplemente implementado una capa estirable-Lista de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/btn_left" android:left="0px" /> 
    <item android:drawable="@drawable/btn_middle" 
     android:left="26px" android:right="26px" /> 
    <item android:drawable="@drawable/btn_right" android:right="0px" /> 
</layer-list> 

Cuando las 26px valores son la anchura de las dos imágenes laterales botón en píxeles.

Para utilizar esta estirable, sólo tiene que llamar al igual que cualquier otra dibujable:

<bitmap android:src="@drawable/button_background" /> 

Esto funciona exactamente cómo se puede esperar que, con la media en expansión como de costumbre a la anchura deseada, y las tres imágenes expandiéndose para ajustarse a la altura deseada. ¡Espero que otros puedan beneficiarse de esto!

+3

Daría mejores resultados si se usa "dp" en lugar de "px". El uso de px dará como resultado botones muy pequeños para la izquierda y la derecha en dispositivos de alta densidad. – seema

Cuestiones relacionadas