10

有什么办法可以防止stroke. shape drawable我更喜欢将笔画完全重叠在形状的边界上。

这是我的xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <padding
        android:bottom="0dp"
        android:top="0dp"
        android:left="0dp"
        android:right="0dp" />
    <solid android:color="@color/green" />
    <stroke android:color="@color/red_50"
        android:width="20dp"
        android:dashGap="2dp"
        android:dashWidth="10dp" />
</shape>

颜色.xml

<color name="green">#0f0</color>
<color name="red_50">#8f00</color>

这就是所取得的成就
示例图像

如您所见,笔画与实体部分重叠 50%,但我希望它是 100%。

4

1 回答 1

8

试着把它分成两种形状——一种用于描边,一种用于矩形。在这个解决方案中,我操纵矩形的大小,以便我可以改变它与边框的关系。

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

    <item
        android:bottom="@dimen/offset"
        android:left="@dimen/offset"
        android:right="@dimen/offset"
        android:top="@dimen/offset">

        <shape android:shape="rectangle">
            <solid android:color="@color/green" />
        </shape>

    </item>

    <item>

        <shape android:shape="rectangle">
            <stroke
                android:width="20dp"
                android:color="@color/red_50"
                android:dashGap="2dp"
                android:dashWidth="10dp" />
        </shape>

    </item>

</layer-list>

您可以调整偏移以获得外部或内部笔划

外行程和内行程

这些值来自透明矩形(描边层)和绿色的大小差异。在您的情况下,它们将是20dp或没有。

于 2016-10-24T13:12:52.960 回答