防止形状可画中风的部分重叠

时间:2016-10-21 06:08:15

标签: android android-shapedrawable

有没有办法阻止stroke shape drawable上的<?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>

colors.xml

PathExpanderBuilder pathExpanderBuilder = PathExpanderBuilder.empty();

pathExpanderBuilder.add(RelationshipType.withName("worksat"), Direction.OUTGOING);
pathExpanderBuilder.add(RelationshipType.withName("competitorof"), Direction.BOTH);
pathExpanderBuilder.add(RelationshipType.withName("worksat"), Direction.INCOMING);

PathExpander<Object> pathExpander pathExpander = pathExpanderBuilder.build();

这是实现的目标 Sample Image

正如您所看到的,笔划与实体部分重叠了50%,但我希望它是100%。

1 个答案:

答案 0 :(得分:6)

尝试将其分为两种形状 - 一种用于 描边 ,另一种用于 矩形 。在这个解决方案中,我操纵矩形的大小,以便我可以改变它与边界的关系。

<?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>

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

Outer & inner stroke

这些值来自 透明矩形 (笔触图层)和 绿色 的尺寸差异。在您的情况下,它们将是20dp或无。