2017-02-05 2 views
-1

Comment une ligne verticale peut-elle être tracée dans un dessin XML lorsque vous utilisez un layer-list? J'ai déclaré 3 formes dans le drawable mais pour une raison quelconque, il n'apparaît pas comme prévu.Comment dessiner une forme verticale au centre d'un dessin XML

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/green"/> 
     </shape> 
    </item> 

    <item android:top="0dp" android:left="1dp" android:bottom="0dp" android:right="5dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp"/> 
      <solid android:color="@android:color/white"/> 
     </shape> 
    </item> 
    <item android:top="0dp" android:left="5dp" android:bottom="0dp" android:right="1dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp"/> 
      <solid android:color="@android:color/white"/> 
     </shape> 
    </item> 
</layer-list> 

Résultat courant

enter image description here

Résultat attendu

enter image description here

Répondre

1
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

<item 
    android:width="16dp" 
    android:left="15px"> 
    <shape 
     android:shape="rectangle"> 
     <solid android:color="@color/colorAccent" />/> 
     <size android:width="5dip" /> 
     <stroke android:color="@color/colorAccent" /> 
    </shape> 
</item> 
<item 
    android:width="16dp" 
    android:left="80px"> 

    <shape 
     android:shape="rectangle"> 
     <solid android:color="@color/colorAccent" />/> 
     <size android:width="5dip" /> 
     <stroke android:color="@color/colorAccent" /> 
    </shape> 
</item> 

<item 
    android:width="16dp" 
    android:left="140px"> 
    <shape 
     android:shape="rectangle"> 
     <solid android:color="@color/colorAccent" />/> 
     <size android:width="5dip" /> 
     <stroke android:color="@color/colorAccent" /> 
    </shape> 
</item> 

</layer-list> 
+0

Ce code nécessite API 23+. Y at-il de toute façon cela peut être créé pour une API inférieure? Mon API minimum est 17. – MacaronLover

+0

Je ne suis pas sûr:/... Quoi qu'il en soit, vous pouvez utiliser l'autre exemple. Ajoutez la forme dans un fichier de disposition distinct et utilisez

0

Essayez cette solution

drawable/shape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<solid android:color="@color/colorAccent" />/> 
<size android:width="5dip" /> 
<stroke 
    android:color="@color/colorAccent" 
    /> 
</shape> 

Inclure dans la mise en page fichier les éléments suivants

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 

<View 
    android:layout_width="15dip" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/activity_horizontal_margin" 
    android:background="@drawable/shape"></View> 

<View 
    android:layout_width="15dip" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/activity_horizontal_margin" 
    android:background="@drawable/shape"></View> 

<View 
    android:layout_width="15dip" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/activity_horizontal_margin" 
    android:background="@drawable/shape"></View> 

</LinearLayout> 

Changer les couleurs et fixer les marges de la mise en page.

+0

Y a-t-il un moyen de le faire dans un format XML uniquement? J'ai besoin de cela pour être dessiné dans un fichier XML dessinable uniquement en raison de mon tableau d'image. – MacaronLover

+0

Vous pouvez essayer une couche-liste ... consultez mon commentaire suivant –