2010-11-10 23 views
33

Je souhaite définir l'arrière-plan d'un objet Relative ou LinearLayout sur un dessin personnalisable. Je veux que la forme dessine deux lignes horizontales à travers le fond, laissant la partie centrale transparente (vide).Android: Comment puis-je utiliser la liste des calques et les éléments de forme pour dessiner une règle horizontale lorsqu'elle est définie en arrière-plan?

Ce qui suit dessine les lignes horizontales centrées verticalement, alors que j'ai besoin qu'elles soient alignées au bas de la forme. (Si vous ajoutez un rectangle en tant qu'élément, vous pouvez voir que la forme s'étend aux dimensions du parent, mais les lignes sont toujours centrées).

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

Répondre

55

J'ai trouvé la réponse avant d'avoir fini de poser des questions à ce sujet.

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

Ce genre de question similaire avait un answere qui m'a aidé avec ce qui précède. http://stackoverflow.com/questions/2224644/drawing-top-border-on-a-shape-on-android – Emile

+0

Pourriez-vous me donner les valeurs de couleur de 'hr_bottom' et' hr_top'? J'ai essayé cela et il a dessiné un rectangle. –

+0

hr_top & hr_bottom sont juste des couleurs, essayez = # FF0000, vous obtiendrez une boîte noire avec du rouge en haut et en bas – Blundell

0

Vous pouvez dessiner avec le code simple ci-dessous également.

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