2012-04-16 12 views
5

Ho bisogno di creare una forma xml che disegni un rettangolo senza la linea superiore (una "forma-u"). Quello che posso fare è disegnare un rettangolo, in questo modo:Android xml shape drawable - come disegnare un modulo U?

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

<solid android:color="@color/detailrow_bg_normal" /> 

<corners 
    android:bottomLeftRadius="0dp" 
    android:bottomRightRadius="0dp" 
    android:radius="1dp" 
    android:topLeftRadius="10dp" 
    android:topRightRadius="10dp" /> 

<padding 
    android:bottom="2dip" 
    android:left="1.5dip" 
    android:right="1.5dip" 
    android:top="8dip" /> 

<stroke 
    android:width="1dip" 
    android:color="@color/detailtable_border" /> 

Ma come - se possibile, posso definire la stessa forma senza il top line (o inferiore)?

risposta

10

Si potrebbe provare a utilizzare un elenco di livelli. Vedere se qualcosa di simile a questo dovrebbe funzionare:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/detailtable_border" /> 
     </shape> 
    </item> 

    <item android:left="1.5dp" android:right="1.5dp" android:bottom="2dp"> 
     <shape android:shape="rectangle"> 
     <solid android:color="@color/detailrow_bg_normal" /> 
     </shape> 
    </item> 
</layer-list> 

Questo (dovrebbe) riempire il rettangolo con il colore del bordo, poi sovrapporre con il colore di sfondo di default, lasciando la giusta quantità di destra colore di mostra/sinistra/bordo inferiore .

+2

Eccellente: ha fatto quel cieco :). Felice di sapere che ha aiutato. – Femi

0

Potrebbe essere possibile ottenere questo utilizzando due forme e un LayerList, ma penso che sia sia una soluzione migliore e più facile da utilizzare un NinePatch -disable.

+0

Pensato a questo, ma richiederebbe notevoli cambiamenti alla soluzione già implementata, preferirei davvero il modo in cui la forma è xml). – Bachi

2

provare questo codice e si riferiscono anche questa link :::

ho raggiunto una buona soluzione con questo:

<?xml version="1.0" encoding="utf-8"?> 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- This is the line --> 
    <item android:top="-1dp" android:right="-1dp" android:left="-1dp"> 
     <shape> 
      <solid android:color="@android:color/transparent" /> 
      <stroke android:width="1dp" android:color="#ffffff" /> 
     </shape> 
    </item> 

</layer-list> 

Questo metodo funziona bene nel caso in cui avete bisogno di un colore trasparente, ma ancora una corsa aperta colore (nel mio caso ho solo bisogno di una linea di fondo). Se hai bisogno di un colore di sfondo puoi aggiungere un colore solido come nella risposta sopra.

+0

prova che deve funzionare –

Problemi correlati