2010-02-21 46 views
8

我试图在xml中创建一个drawable,一个在上半部分具有一个渐变的矩形,另一个在下半部分。这是不是做到这一点,显然:用xml在上半部分创建一个可绘制的矩形,在上半部分创建一个渐变,另一个在下半部分

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
       <gradient 
         android:startColor="#5a5a5a88" 
         android:endColor="#14141488" 
         android:angle="270" android:centerX="0.25"/> 

     </shape> 
    </item> 
    <item> 
     <shape android:shape="rectangle" android:top="80px"> 
       <gradient 
         android:startColor="#5aff5a88" 
         android:endColor="#14ff1488" 
         android:angle="270" android:centerX="0.25"/> 

     </shape> 
    </item> 
</layer-list> 

我怎么能这样做,最好的方式,使其可以拉伸到任何高度?

回答

8

如果您的目标是具有带中心颜色的梯度(开始于颜色A,转换在中间到B,然后在端部过渡到C)中,添加android:centerColorandroid:centerY属性到您<shape>元件中的一个和核对另一个。你可以在一个形状中完成三色渐变。

+0

其实,我想要的颜色的两个不同的领域......所以,它不会真的在最后过渡到另一种颜色。 在中间,它将以完全不同的颜色开始,并在最后过渡到另一种颜色。 – synic 2010-02-21 22:06:09

+0

那么为什么你需要一个'Drawable'呢? ''不是'LinearLayout' - 它们不垂直堆叠。 – CommonsWare 2010-02-21 23:03:20

+0

我需要它在一个Drawable中,因为我想将它用作LinearLayout的背景。 – synic 2010-02-21 23:38:48

0

你小bug,顶级属性应该是在项目元素;)

它的工作:

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <gradient 
        android:startColor="#5a5a5a88" 
        android:endColor="#14141488" 
        android:angle="270" android:centerX="0.25"/> 

     </shape> 
    </item> 
    <item android:top="80dp"> 
    <shape android:shape="rectangle"> 
      <gradient 
        android:startColor="#5aff5a88" 
        android:endColor="#14ff1488" 
        android:angle="270" android:centerX="0.25"/> 

    </shape> 
</item> 
</layer-list> 
相关问题