Линии формы всегда черные в формате XML.

Я пытаюсь сделать рисование, которое должно выглядеть как на рисунке ниже: 3 горизонтальные линии 1dpкаждый из которых имеет свой цвет, а оставшееся пространство должно быть заполнено градиентом:

Серая часть представляет собой градиент

Итак, я написал это:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="line">
            <stroke android:width="1dp" android:color="#c80047"/>
        </shape>
    </item>
    <item android:top="1dp">
        <shape android:shape="line" >
            <stroke android:width="1dp" android:color="#5ec800"/>
        </shape>
    </item>
    <item android:top="2dp">
        <shape android:shape="line" >
            <stroke android:width="1dp" android:color="#ffffff"/>
        </shape>
    </item>
    <item android:left="0dp" android:right="0dp" android:top="3dp"> 
        <shape android:shape="rectangle">

            <gradient android:angle="-90" android:startColor="#3B3B3B"
                android:endColor="#000000" />

        </shape>
    </item>

</layer-list>

Градиент правильно нарисован, но 3 линия остается черной. Я пытался добавить <stroke android:color="a_color" /> без результата.

Что мне не хватает?

2 ответа

Решение

Эти линии нарисованы, но они нарисованы не сверху, где вы думаете, а вместо этого они нарисованы в центре рисованного элемента (вы можете увидеть это, если переместите последний элемент, прямоугольник с градиентом вверху перед любым формы линий) и покрыты последним элементом, прямоугольником градиента.

Чтобы сделать это рисованным, вы можете попробовать это:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape>
            <solid android:color="#c80047" />

            <size android:height="1dp" />
        </shape>
    </item>
    <item android:top="1dp">
        <shape>
            <solid android:color="#5ec800" />

            <size android:height="1dp" />
        </shape>
    </item>
    <item android:top="2dp">
        <shape>
            <solid android:color="#ffffff" />

            <size android:height="1dp" />
        </shape>
    </item>
    <item
        android:left="0dp"
        android:right="0dp"
        android:top="3dp">
        <shape android:shape="rectangle" >
            <gradient
                android:angle="-90"
                android:endColor="#000000"
                android:startColor="#3B3B3B" />
        </shape>
    </item>

</layer-list>

Все эти три линии выровнены по центру, я не видел параметров для настройки гравитации. Я бы пошел по этим линиям также как прямоугольник.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item> 
        <shape android:shape="rectangle">
            <solid android:color="#c80047"/>
        </shape>
    </item>
        <item android:top="1dp"> 
        <shape android:shape="rectangle">
            <solid android:color="#5ec800"/>
        </shape>
    </item>
    <item android:top="2dp"> 
        <shape android:shape="rectangle">
            <solid android:color="#ffffff"/>
        </shape>
    </item>
    <item android:left="0dp" android:right="0dp" android:top="3dp"> 
        <shape android:shape="rectangle">
            <gradient android:angle="-90" android:startColor="#3B3B3B"
                android:endColor="#000000" />
        </shape>
    </item>
</layer-list>
Другие вопросы по тегам