Android - How to draw a transparent rectangle bordered shape with only its corners visible?

家住魔仙堡 提交于 2019-12-08 12:59:52

问题


I want to draw a shape like this in android.

I used the following code

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shape_my">
<stroke
    android:width="2dp"
    android:dashWidth="20dp"
    android:dashGap="20dp"
    android:color="#c1c1c1" />
<padding
    android:bottom="20dp"
    android:left="20dp"
    android:right="20dp"
    android:top="20dp" />
<corners android:radius="0dp" />
<solid android:color="#00000000" />
</shape>

But no perfection I got. Help me, friends.


回答1:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/transparent" />
    <stroke
        android:width="1.5dp"
        android:color="@color/white" />
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />
</shape>



回答2:


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

        <solid android:color="#00FFFFFF" />

        <padding android:left="10dp"
            android:right="10dp"
            android:top="10dp"
            android:bottom="10dp" />
    </shape>
</item>




回答3:


Here is what you want with little exception that skipped border have white color. I achieve it using layer list. you should try it if you need center transparent

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="300dp"
        android:height="300dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="15px"
                android:color="#000000" />
            <solid android:color="#00000000" />
        </shape>
    </item>
    <item
        android:width="8dp"
        android:bottom="35dp"
        android:top="35dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="8dp"
        android:bottom="35dp"
        android:gravity="right"
        android:top="35dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:height="8dp"
        android:gravity="top"
        android:left="35dp"
        android:right="35dp"
        android:top="-1dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:height="8dp"
        android:gravity="bottom"
        android:left="35dp"
        android:right="35dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>



回答4:


Try this ,it worked perfect for me

    `
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     <item
      android:width="300dp"
      android:height="300dp">
    <shape android:shape="rectangle">
        <stroke
            android:width="15px"
            android:color="#00000000" />

        <solid android:color="#00000000" />

    </shape>
</item>
<item
    android:width="7dp"
    android:bottom="0dp"
    android:top="260dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:width="7dp"
    android:bottom="260dp"
    android:top="0dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:width="8dp"
    android:bottom="0dp"
    android:gravity="right"
    android:top="260dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:width="8dp"
    android:bottom="260dp"
    android:gravity="right"
    android:top="0dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:height="8dp"
    android:gravity="top"
    android:left="0dp"
    android:right="260dp"
    android:top="-1dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:height="8dp"
    android:gravity="top"
    android:left="260dp"
    android:right="0dp"
    android:top="-1dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:height="8dp"
    android:gravity="bottom"
    android:left="0dp"
    android:right="260dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>
<item
    android:height="8dp"
    android:gravity="bottom"
    android:left="260dp"
    android:right="0dp">
    <shape android:shape="rectangle">
        <solid android:color="#000" />
    </shape>
</item>

`



来源:https://stackoverflow.com/questions/45632822/android-how-to-draw-a-transparent-rectangle-bordered-shape-with-only-its-corne

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!