美文网首页
android绘制虚线

android绘制虚线

作者: 清风流苏 | 来源:发表于2017-11-07 20:17 被阅读195次

    有两种通过xml定义虚线的方法:

    方法一

    定义drawable_dash_line.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <shape android:shape="line" xmlns:android="http://schemas.android.com/apk/res/android">
        <stroke
            android:color="#979797"
            android:dashWidth="6dp"
            android:dashGap="4dp"
            android:width="1dp"/>
    </shape>
    
    • color:虚线的颜色
    • dashWidth:虚线中的短线长度
    • dashGap:虚线每个短线之间间隔
    • width:表示虚线的“厚度”

    使用

    <View
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:background="@drawable/drawable_dash_line"
        android:layerType="software"
        />
    

    layerType需要设置为software,否则显示的是一条直线。(硬件加速不支持这种情况,因此需要禁用)。layout_height需要大于上面drawable_dash_line.xml中定义的虚线的width,否则显示不出来。

    方法二

    定义drawable_dash_line_2.xml

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:left="-5dp" android:top="-5dp" android:right="-5dp" android:bottom="0dp">
            <shape>
                <solid android:color="#ffffff" />
                <stroke
                    android:dashGap="5dp"
                    android:dashWidth="5dp"
                    android:width="1dp"
                    android:color="#979797" />
            </shape>
        </item>
    </layer-list>
    

    这里利用的是将layer-listitem的各个lefttop之类的属性设置为负值时候可以让这一边显示到View的边框之外(即不可见的地方)来达到只显示某一边的效果。上面定义了除去bottom之外的其他边的margin都为-5dp,这样就只会显示bottom这一条底边,实际上-5dp是随意定义的一个负值,你使用-1dp也是可以的。

    layer-list的用法建议参考这篇文章

    使用

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@drawable/drawable_dash_line_2"
        />
    

    参考文章:
    https://stackoverflow.com/questions/6103713/how-do-i-make-a-dotted-dashed-line-in-android

    相关文章

      网友评论

          本文标题:android绘制虚线

          本文链接:https://www.haomeiwen.com/subject/ydbqgttx.html