2010-11-10 4 views
33

Voglio impostare lo sfondo di un Relativo o LinearLayout su un drawable personalizzato. Voglio che la forma disegna due linee orizzontali sul fondo, lasciando la parte centrale trasparente (vuota).Android: come posso utilizzare gli elenchi di livelli e gli elementi di forma per disegnare una regola orizzontale quando impostata come sfondo?

Il seguente disegna le linee orizzontali centrate verticalmente, dove ho bisogno che siano allineate al fondo della forma. (Se aggiungi un rettangolo come elemento puoi vedere che la forma si espande nelle dimensioni del genitore, ma le linee sono ancora allineate centralmente).

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item> 
    <shape android:shape="line"> 
     <stroke android:width="1dip" android:color="#99b8b9bd" /> 
     <size android:height="1dip" /> 
    </shape> 
</item> 
<item> 
    <shape android:shape="line" android:top="1dip"> 
     <stroke android:width="1dip" android:color="#FFFFFFFF" /> 
     <size android:height="1dip" /> 
    </shape> 
</item> 
</layer-list> 

risposta

55

Trovato la risposta prima che avessi finito di chiedere a questo proposito.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="@color/hr_bottom" /> 
      <solid android:color="#00FF0000" /> 
      <padding android:bottom="1dp"/> 
     </shape> 
    </item> 

    <item> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="@color/hr_top" /> 
      <solid android:color="#00FF0000" /> 
      <padding android:bottom="1dp"/> 
     </shape> 
    </item> 

    <item> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#00000000" /> 
      <solid android:color="#00000000" /> 
     </shape> 
    </item> 

</layer-list> 
+0

Questo tipo di domanda simile ha avuto un answere che mi ha aiutato con quanto sopra. http://stackoverflow.com/questions/2224644/drawing-top-border-on-a-shape-on-android – Emile

+0

Potresti darmi i valori di colore di 'hr_bottom' e' hr_top'? Ho provato questo e ha disegnato un rettangolo. –

+0

hr_top & hr_bottom sono solo colori, prova = # FF0000, riceverai una scatola nera con il rosso in alto e in basso – Blundell

0

È inoltre possibile disegnare con un semplice codice.

<item 
    android:right="-2dp" 
    android:bottom="-2dp" 
    > 
    <shape 
     android:shape="rectangle"> 

     <stroke 
      android:width="0.5dp" 
      android:color="#ff0000" 
      android:dashGap="4dp" 
      android:dashWidth="4dp" /> 

    </shape> 
</item>