2011-10-03 55 views
9

如何在XML中定義容易重用的基礎形狀(或漸變或角點)?定義漸變/形狀/角的XML父樣式

我有一打左右的可繪製漸變,將是除開始和結束顏色以外。我希望能夠在其他地方定義相同的東西,併爲每個不同的漸變使用XML文件,這些漸變只定義了開始和結束的顏色。那可能嗎?

這是基礎:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <gradient xmlns:android="http://schemas.android.com/apk/res/android" 
     android:type="linear" 
     android:angle="270" 
    android:startColor="#e1ffffff" 
    android:endColor="#e100ff00"> 

    <stroke android:width="1dp" 
      android:color="#ff000000" /> 

    <corners android:radius="4dp" /> 
</gradient> 
</shape> 

然後我想覆蓋startColor和ENDCOLOR(也許彎道半徑過或任何其他財產)在每個繪製的XML文件。

我試着使用父母和樣式,但他們都沒有使用任何屬性。例如:

<style name="base_gradient"> 
    <item name="android:angle">270</item> 
    <item name="android:type">linear</item> 
    <item name="android:startColor">#e1ffffff</item> 
    <item name="android:endColor">#e100ff00</item> 
</style> 

然後被拉伸的樣子:

<gradient style="@style/base_gradient" /> 

這沒有奏效。我試圖把類似上述在自己的XML文件,然後執行此操作爲每個繪製:

<gradient parent="@drawable/base_gradient" /> 

這也不能工作。

有沒有辦法做到這一點?

回答

7

不幸的是我不認爲這是可能的。我試圖做同樣的事情,並找不到解決方案。

我會建議將所有的值放在資源XML文件中。在我的情況下,我選擇將我的尺寸放在dimens.xml,& integers.xml和colours.xml中的顏色(雖然它們可以合併成一個文件)

雖然我最終爲每個顏色,至少如果我想調整顏色或填充等我只需要編輯colours.xml文件integers.xml或dimens.xml文件。

我的一個形狀繪製的則是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <corners 
     android:radius = "@dimen/radius_corner" /> 

    <!-- end colour at top, start colour at bottom --> 
    <gradient 
     android:angle="@integer/gradient_angle_default" 
     android:endColor="@color/white" 
     android:startColor="@color/pink_pale"/> 

    <padding 
     android:left = "@dimen/my_padding" 
     android:right = "@dimen/my_padding" 
     android:bottom = "@dimen/my_padding" 
     android:top = "@dimen/my_padding" /> 

</shape> 

資源文件鏈接:http://developer.android.com/guide/topics/resources/more-resources.html

希望這有助於。