2012-03-07 5 views
5

Attualmente sto sviluppando un'applicazione Android. Voglio fare un testo (un colpo di testa) con uno sfondo che assomiglia a questo:Ridimensiona bitmap all'interno di un disegnabile layer-list

_______ 
/______/ 

ho il seguente codice:

<?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> 

Così ho fatto per le immagini in modo da con un triangolo transparant che sono posto ad entrambe le estremità.

Questo funziona bene per le intestazioni con una sola linea, ma quando un colpo di testa prende due righe sembra che questo:

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

Quindi la mia domanda è: E 'possibile ridimensionare entrambe le immagini sembra così correttamente? Grazie!

+0

Avete guardato in utilizzando un 9-patch? – dmon

+0

Sì, ma non voglio usare una 9-patch, voglio mantenere la variabile di colore 'interna'. – user1255553

risposta

10

ho risolto utilizzando due immagini (half-transparant) che rappresentano gli angoli.

L'XML assomiglia a questo:

<?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

è anche possibile utilizzare 'Android: la gravità = "right | fill_vertical"' e 'Android: la gravità = "left | fill_vertical"' di scalare il bitmap sinistra a destra e verticale – grine4ka

1

Invece di utilizzare un elenco di livelli con tratto sfumato/bordo e un'immagine personalizzata, prendere in considerazione l'utilizzo di NinePatchDrawable.

C'è anche un pratico 9-patch creater che viene fornito con l'SDK di Android.

+0

Il motivo che voglio usare sfumatura di colore è perché la variabile "jaarkleur" può cambiare. È più semplice modificare questa variabile per creare un'immagine di sfondo completamente nuova. – user1255553