1. 程式人生 > >Android 使用shape實現虛線或者虛線框

Android 使用shape實現虛線或者虛線框

畫一條虛線作為分割線

1.先寫一個shape,命名為shape_line_dash.xml

虛線

?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
    android:width="1dp"
    android:color="#f3f3f3"
    android:dashWidth="3dp"
    android:dashGap="3dp" />
</shape>

虛線框

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
    android:width="1dp"
    android:color="#f3f3f3"
    android:dashWidth="3dp"
    android:dashGap="3dp" />
</shape>

虛線圓

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
    android:width="1dp"
    android:color="#f3f3f3"
    android:dashWidth="3dp"
    android:dashGap="3dp" />
</shape>

頂部虛線

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:left="-2dp"
    android:right="-2dp"
    android:bottom="-2dp">
    <shape>
        <stroke
            android:width="1dp"
            android:color="#f3f3f3"
            android:dashWidth="3dp"
            android:dashGap="3dp" />
    </shape>
</item>
</layer-list>

底部虛線

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:left="-2dp"
    android:right="-2dp"
    android:top="-2dp">
    <shape>
        <stroke
            android:width="1dp"
            android:color="#f3f3f3"
            android:dashWidth="3dp"
            android:dashGap="3dp" />
    </shape>
</item>
</layer-list>
2.使用
<View
    android:layerType="software"
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:layout_marginTop="15dp"
    android:background="@drawable/shape_line_dash"/>
注意: 
  1.引用的時候,View的height要大於shape中stroke的width,不然會顯示不出來,或者顯示不全。
  2.還要設定一個屬性layerType為software,不然顯示出來的是實線。