Есть ли способ предотвратить частичное перекрытие 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
или ничего.