Линии формы всегда черные в xml drawable

Я пытаюсь сделать рисунок, который должен выглядеть как на изображении ниже: 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" /> безрезультатно.

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


person grunk    schedule 14.06.2012    source источник


Ответы (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>
person user    schedule 14.06.2012
comment
Спасибо за Ваш ответ. В вашем решении вторая строка имеет ширину 2 dp, а первая и третья - 1 dp. У меня такая же проблема с использованием shape=rectangle. Выдержка из примера из моего приложения видна здесь: hpics.li/437e8e4 (сохраните и увеличьте масштаб) - person grunk; 14.06.2012
comment
@grunk Я видел картинку, но я думаю, что это происходит из-за размера этих линий (помните, что 1dp действительно мал для экрана телефона, пользователь едва увидит, что там что-то есть, не говоря уже о размерах каждой строки) . В любом случае, я проверил свой код, и линии имеют одинаковый размер, если вы используете большие размеры (я использовал 10dp, чтобы лучше видеть линии), и это работает, линии имеют одинаковую высоту. - person user; 14.06.2012
comment
Вы имеете какое-либо представление об этом? :stackoverflow.com/questions/19166342/ - person ; 07.10.2013

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

<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>
person Sudar Nimalan    schedule 14.06.2012