Android豎虛線繪製

yangxi_001發表於2016-10-08

在Android UI製作中,經常會需要一些線條作為分隔線,一般做個width或height為1dp的view就可以解決了,如果需要虛線,則需要在drawable目錄自定義xml進行繪製了,一般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="@color/white"
        android:dashWidth="5dp"
        android:dashGap="2dp" />
</shape>

然後在需要畫虛線的地方使用該drawable作為背景即可。

不過如果需要一條豎虛線,就麻煩很多。

首先,同樣定義xml檔案,不過要旋轉90度,這樣就是豎的了:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:toDegrees="90">
    <shape android:shape="line">
        <stroke
            android:width="1dp"
            android:color="@color/white"
            android:dashWidth="5dp"
            android:dashGap="2dp"
            />
    </shape>
</rotate>

另外,在使用該drawable時,寬度不能設為1dp,因為這個寬度是旋轉前的虛線長度,如果設為1dp,則看不出虛線了,所以需要一點小技巧:

1)在view的寬度設大一些,然後設定marginLeft 和marginRight 為負值,就不會影響到旁邊的view了

        <View
            android:background="@drawable/dot_line_white"
            android:layout_marginLeft="-10dp"
            android:layout_marginRight="-10dp"
            android:layerType="software"
            android:layout_width="50dp"
            android:layout_height="match_parent"/>

2)使用FrameLayout等佈局方式,將虛線view置於其他view之上。

注意:設定時必須設定layerType為software,否則手機顯示不會顯示出虛線。

相關文章