仅在实体的右侧使用Stroke可绘制

时间:2019-06-26 23:54:15

标签: android xml drawable

如何在不使用inset的情况下仅在可绘制对象的右侧使用笔划?

enter image description here

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <size
                android:width="20dp"/>
            <solid android:color="@color/colorWhite" />
            <stroke
                android:width="1dp"
                android:color="@color/colorPink">
            </stroke>
        </shape>
    </item>
</layer-list>

编辑:由于重叠问题,无法使用负片 enter image description here

2 个答案:

答案 0 :(得分:2)

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

<item android:right="2dp">
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>
</layer-list>

或使用填充:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <solid android:color="#ff0000" />
        <padding android:right="1dp"/>
    </shape>
</item>

<item>
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>
</layer-list>

或:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <solid android:color="#ffffff"/>
    </shape>
</item>
<item android:gravity="right">
    <shape>
        <size android:width="1dp"/>
        <solid android:color="#ff0000"/>
    </shape>
</item>
</layer-list>

或:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:bottom="-2dp"
    android:left="-2dp"
    android:top="-2dp">
    <shape>
        <solid android:color="@android:color/white" />
        <stroke
            android:width="1dp"
            android:color="#ff0000" />
    </shape>
</item>
</layer-list>

答案 1 :(得分:0)

您可以先绘制一个粉红色的图层,然后再绘制一个离右边界较远的白色1dp来实现:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Pink layer -->
    <item android:width="20dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorWhite" />
        </shape>
    </item>

    <!-- white layer. It'll cover the pink layer except the last dp -->
    <item android:right="1dp" android:width="19dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorWhite" />
        </shape>
    </item>

</layer-list>

也许您可以调整