2011-10-03 23 views
9

¿Cómo puedo definir una forma de base (o gradiente o esquinas) fácilmente reutilizable en XML?Definición del estilo principal XML de degradado/forma/esquinas

Tengo una docena de degradados dibujables que serán los mismos que los colores de inicio y final. Esperaba definir el material idéntico en otro lugar y tener un archivo XML para cada gradiente diferente que solo definiera los colores de inicio y fin. ¿Es eso posible?

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

luego quería para sobrescribir el StartColor y EndColor (y tal vez las esquinas radio demasiado o cualquier otra propiedad) en el archivo XML de cada estirable.

Intenté usar tanto padres como estilos, pero ninguno de ellos usa ninguna de las propiedades. Por ejemplo:

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

y luego el aspecto dibujable como:

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

eso no funcionó. He intentado poner de manera similar al anterior en su propio archivo XML y luego hacer esto para cada dibujable:

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

eso no funcionó bien.

¿Hay alguna manera de hacerlo?

Respuesta

7

Desafortunadamente, no creo que sea posible. Traté de hacer lo mismo y no pude encontrar una solución.

Lo que sugeriría es poner todos sus valores en los archivos de recursos xml. En mi caso, elegí poner mis dimensiones en dimens.xml, & integers.xml y colores en colours.xml (aunque podrían haberse combinado en un solo archivo)

Mientras terminaba con un archivo dibujable de forma para cada color, al menos si quiero ajustar colores o relleno, etc. Solo necesito editar el archivo colours.xml file integers.xml o dimens.xml.

Una de mi forma estirable entonces era la siguiente:

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

Recursos enlace del archivo: http://developer.android.com/guide/topics/resources/more-resources.html

Espero que esto ayude.

Cuestiones relacionadas