2012-06-14 5 views
0

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

The grey part represent the gradient

Так что я писал:

<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" /> безрезультатно.

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

ответ

1

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

Чтобы сделать эту вытяжку, вы можете попробовать это:

<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> 
+0

Спасибо за ваш ответ. С вашим решением вторая строка имеет ширину 2dp, а первая и третья - 1dp. У меня такая же проблема, используя shape = "rectangle". Экземпляр из моего приложения можно увидеть здесь: http://hpics.li/437e8e4 (сохранить и увеличить его) – grunk

+0

@grunk Я видел изображение, но я думаю, что это происходит из-за размера этих строк (помните, что '1dp' действительно мал для экрана телефона, пользователь почти не видит, что там что-то есть, не говоря уже о каждом размере каждой строки). Во всяком случае, я тестировал свой код, и строки имеют одинаковый размер, если вы используете большие размеры (я использовал 10dp, чтобы лучше видеть линии лучше), и он работает, линии имеют одинаковую высоту. – Luksprog

+0

У вас есть представление об этом? : HTTP: //stackoverflow.com/questions/19166342/how-do-i-avoid-double-borders-between-lists/19201562 noredirect = 1 # comment28459924_19201562 –

0

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

<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> 

 Смежные вопросы

  • Нет связанных вопросов^_^