2012-03-07 5 views
5

Actualmente estoy desarrollando una aplicación para Android. Quiero hacer un texto (una cabecera) con un fondo que se ve así:Redimensionar mapa de bits dentro de una lista de capas dibujables

_______ 
/______/ 

tengo el siguiente código:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape>  
      <gradient 
       android:startColor="@color/jaarkleur" 
       android:centerColor="@color/jaarkleur" 
       android:endColor="#E66C2C00" 
       android:angle="0" /> 
      <stroke android:width="1dp" 
      android:color="#ff000000" 
      />  
     </shape> 
    </item> 
    <item> 
     <bitmap android:src="@drawable/overlay_left" android:gravity="left" /> 
    </item> 
    <item> 
     <bitmap android:src="@drawable/overlay_right" android:gravity="right" /> 
    </item> 

</layer-list> 

Hice, pues, a las imágenes por lo que con un triángulo transparente que son colocado en ambos extremos.

Esto funciona bien para los encabezados con una sola línea, pero cuando una cabecera ocupa dos líneas que se parece a esto:

http://i.imgur.com/lDQGo.png

Así que mi pregunta es: ¿Es posible cambiar el tamaño de las dos imágenes tan miradas ¿correctamente? ¡Gracias!

+0

¿Ha mirado en el uso de un parche de 9? – dmon

+0

Sí, pero no quiero usar un parche de 9, quiero mantener la variable de color 'interna'. – user1255553

Respuesta

10

Lo resolví usando dos imágenes (medio transparentes) que representan las esquinas.

El XML tiene el siguiente aspecto:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
       <shape>  
        <gradient 
         android:startColor="@color/jaarkleur" 
         android:centerColor="@color/jaarkleur" 
         android:endColor="#E66C2C00" 
         android:angle="0" /> 
        <stroke android:width="1dp" 
      android:color="#ff000000" 
      />  
       </shape> 
     </item> 
     <item> 
      <bitmap android:src="@drawable/overlay_left" android:gravity="left|top" /> 
     </item> 
     <item> 
      <bitmap android:src="@drawable/overlay_right" android:gravity="right|bottom" /> 
     </item>   
</layer-list> 
+2

también puede usar 'android: gravity =" right | fill_vertical "' and 'android: gravity =" left | fill_vertical "' para escalar verticalmente su mapa de bits derecho e izquierdo – grine4ka

1

En lugar de utilizar una lista de capas con un degradado/trazo de borde y una imagen personalizada, considere usar un NinePatchDrawable.

También hay un práctico parche de 9 parches creater que viene con el SDK de Android.

+0

La razón por la que deseo usar el color de degradado es porque la variable "jaarkleur" puede cambiar. Es más fácil simplemente modificar esta variable y luego crear una nueva imagen de fondo. – user1255553

Cuestiones relacionadas