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

ストローク用と長方形用の 2 つの形状に分割してみてください。このソリューションでは、長方形のサイズを操作して、境界線との関係を変更できるようにします。

<?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 に答える