Definición del estilo de origen XML de Gradient / Shape / Corners
¿Cómo puedo definir una forma de base fácilmente reutilizable (o gradiente, o esquinas) en XML?
Tengo una docena de gradientes dibujables que serán iguales que los colores de inicio y final. Tenía la esperanza de definir las cosas idénticas en otro lugar y tener un archivo XML para cada gradiente diferente que sólo se definen los colores de inicio y final. ¿Es eso posible?
- Almacenamiento de archivos de prueba en el proyecto de prueba
- Añadiendo el hilador a ActionBar (no Navegación
- Android: Archivo XML de caché de RSS Feed
- Cómo cambiar la dirección de la sombra de elevación de Android?
- Las etiquetas HTML no funcionan dentro de strings.xml
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>
Entonces quise sobrescribir el startColor y el endColor (y quizás el radio de las esquinas también o cualquier otra característica) en el archivo XML de cada drawable.
Intenté usar el padre y los estilos, pero ninguno de ellos utiliza ninguna de las características. 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 entonces el dibujable se parece a:
<gradient style="@style/base_gradient" />
Eso no funcionó. He intentado de manera similar poner lo anterior en su propio archivo XML y luego hacer esto por cada drawable:
<gradient parent="@drawable/base_gradient" />
Eso tampoco funcionó.
¿Hay alguna forma de hacer esto?
- Android: no se puede obtener valor de EditText dentro de Custom Dialog
- Adición de forma a LinearLayout Android
- Se ha producido un error de análisis XML de Android Error inesperado
- Implementación de SeekBar simple en android
- Cómo agregar niños a childnodes mediante el documento jsoup
- Por qué el flag isLockTaskPermitted es falso
- Error: (3) Error al analizar XML: no bien formado (token no válido)
- Custom Switch - el tamaño de la pista y el selector no funcionan por debajo de 21 API
Desafortunadamente no creo que sea posible. Traté de hacer lo mismo y no pude encontrar una solución.
Lo que yo sugeriría es poner todos sus valores en archivos xml de recursos. En mi caso elegí poner mis dimensiones en dimens.xml, & integers.xml y colours en colours.xml (aunque podrían haber sido combinados en un archivo)
Mientras que terminé con un archivo de forma dibujable para cada color, al menos si quiero ajustar los colores o el relleno, etc Sólo tengo que editar el archivo colours.xml archivo integers.xml o dimens.xml.
Uno de mi forma dibujable entonces parecía esto:
<?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>
Enlace del archivo de recursos: http://developer.android.com/guide/topics/resources/more-resources.html
Espero que esto ayude.
- ArrayList indexOf () devuelve índice incorrecto?
- Por qué Android Circle Progress Dialog Cómo se congela cuando un montón de datos Sincronización de servidor a DB local mediante Retrofit