2011-10-03 8 views
9

Come è possibile definire una forma di base facilmente riusabile (o una sfumatura o angoli) in XML?Definizione di stile padre XML di gradiente/forma/angoli

Ho una dozzina di gradienti disegnabili che saranno gli stessi oltre ai colori iniziale e finale. Speravo di definire le cose identiche da qualche altra parte e di avere un file XML per ogni diverso gradiente che definiva solo i colori iniziale e finale. È possibile?

Questa è la base:

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

poi volevo sovrascrivere lo StartColor e EndColor (e forse gli angoli di raggio troppo o qualsiasi altra proprietà) nel file XML di ogni drawable.

Ho provato ad utilizzare sia il genitore che gli stili, ma nessuno di essi usa nessuna delle proprietà. Per esempio:

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

E poi gli sguardi disegnabili come:

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

che non ha funzionato. Ho provato a mettere allo stesso modo di cui sopra in un file XML e quindi facendo questo per ogni drawable:

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

che non ha funzionato neanche.

C'è un modo per farlo?

risposta

7

Purtroppo non penso sia possibile. Ho provato a fare la stessa cosa e non ho trovato una soluzione.

Quello che vorrei suggerire è mettere tutti i tuoi valori nei file xml delle risorse. Nel mio caso ho scelto di inserire le mie dimensioni in dimens.xml, & interix.xml e colori in colours.xml (anche se avrebbero potuto essere combinati in un unico file)

Mentre ho finito con un file disegnabile forma per ogni colore, almeno se voglio modificare i colori o il padding ecc. Ho solo bisogno di modificare il file colours.xml, intere.xml o dimens.xml.

Una mia forma drawable allora si presentava così:

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

Resource link del file: http://developer.android.com/guide/topics/resources/more-resources.html

Spero che questo aiuti.

Problemi correlati