Рисуется с помощью Stroke только на правой стороне тела - PullRequest
1 голос
/ 27 июня 2019

Как бы я использовал обводку только на правой стороне моего рисованного элемента БЕЗ насадок?

enter image description here

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <size
                android:width="20dp"/>
            <solid android:color="@color/colorWhite" />
            <stroke
                android:width="1dp"
                android:color="@color/colorPink">
            </stroke>
        </shape>
    </item>
</layer-list>

Редактировать: Невозможно использовать отрицательные вставки из-за проблемы перекрытия enter image description here

Ответы [ 2 ]

2 голосов
/ 27 июня 2019
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <solid android:color="#ff0000" />
    </shape>
</item>

<item android:right="2dp">
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>
</layer-list>

или используйте отступы:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <solid android:color="#ff0000" />
        <padding android:right="1dp"/>
    </shape>
</item>

<item>
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>
</layer-list>

или

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <solid android:color="#ffffff"/>
    </shape>
</item>
<item android:gravity="right">
    <shape>
        <size android:width="1dp"/>
        <solid android:color="#ff0000"/>
    </shape>
</item>
</layer-list>

или

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:bottom="-2dp"
    android:left="-2dp"
    android:top="-2dp">
    <shape>
        <solid android:color="@android:color/white" />
        <stroke
            android:width="1dp"
            android:color="#ff0000" />
    </shape>
</item>
</layer-list>
0 голосов
/ 27 июня 2019

Этого можно добиться, рисуя розовый слой, а затем рисуя белый слой 1dp, удаленный от правой границы:

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

    <!-- Pink layer -->
    <item android:width="20dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorWhite" />
        </shape>
    </item>

    <!-- white layer. It'll cover the pink layer except the last dp -->
    <item android:right="1dp" android:width="19dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorWhite" />
        </shape>
    </item>

</layer-list>

Возможно, вы можете настроить

...