防止形状可绘制笔划的部分重叠
prevent partial overlapping of shape drawable stroke
有什么方法可以防止 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>
colors.xml
<color name="green">#0f0</color>
<color name="red_50">#8f00</color>
这是实现的结果
如您所见,描边与实心部分重叠了 50%,但我希望它是 100%。
试着把它分成两种形状——一种是笔划,一种是矩形。在这个解决方案中,我操纵矩形的大小,以便我可以改变它与边框的关系。
<?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
或 none.
有什么方法可以防止 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>
colors.xml
<color name="green">#0f0</color>
<color name="red_50">#8f00</color>
这是实现的结果
如您所见,描边与实心部分重叠了 50%,但我希望它是 100%。
试着把它分成两种形状——一种是笔划,一种是矩形。在这个解决方案中,我操纵矩形的大小,以便我可以改变它与边框的关系。
<?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
或 none.