2012-01-10 10 views
5

De acuerdo con la documentación de Android, Android: StartColor puede tener atributos como un valor:Cómo agregar un atributo de tema a android: startColor en degradado dibujable en Android?

Esto también puede ser una referencia a un recurso (en forma "@ [paquete:] Tipo: nombre") o el tema atributo (en el formato "? [paquete:] [tipo:] nombre") que contiene un valor de este tipo.

Estoy tratando de agregar un atributo a mi gradiant dibujable, sin embargo me sale un error. Aquí está el código para el dibujable:

aquí es el código en style.xml:

<style name="test" parent="android:Theme"> 
    <item name="android:startColor">#0b2749</item> 
    <item name="startColor">#0b2749</item> 
</style> 

Cuando trato de ejecutar la actividad consigo este mensaje de error:

01-10 20:47:30.810: E/AndroidRuntime(7279): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 

He intentado cambiar? StartColor to? Attr/startColor y todavía tengo el mismo error. También apliqué el tema a la actividad en el archivo AndroidManifest.xml.

¿Cómo puedo agregar un atributo de tema al dibujante de degradado?

+0

Mismo problema aquí con Android: color en un elemento de trazo. De hecho, parece que esta excepción se produce cada vez que intentamos hacer referencia a un atributo de estilo desde un dibujable. Esto parece un error de Android. – Guillaume

+0

Encontré una solución que puede funcionar para usted, vea mi respuesta – Guillaume

Respuesta

-1

Parece que ha cometido un pequeño error por su color. Android toma el tipo de entrada #[alpha] [hex] para colores. Usted acaba de proporcionar la parte hexagonal. Android no es compatible con esto, de ahí el UnsupportedOperationException.

Pruebe con esto:

<item name="android:startColor">#FF0b2749</item>

No puedo garantizar que esto funciona, sin embargo, ya que nunca he trabajado con gradientes en combinación con un estilo.

+0

En realidad, Android admite colores sin el valor alfa. Según la misma documentación: debe ser un valor de color, en forma de "#rgb", "#argb", "#rrggbb" o "#aarrggbb". –

+0

Hmm. Cuanto más sabes Tuve problemas con esto hace un tiempo hasta que agregué alfa, pero es bueno saber que funciona sin él. –

+0

Eso no resuelve el problema, sin embargo: con o sin el valor alfa, se produce la misma excepción – Guillaume

0
<style name="customTheme" parent="android:Theme"> 
    <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item> 
</style> 

Añadir el código anterior en colors.xml en la carpeta de los valores y el código siguiente en styles.xml

<color name="titlebackgroundcolor">#FFFFFF</color> 
<color name="titletextcolor">#000000</color> 
+0

El código no está claro. ¿Podría formatearlo para poder probarlo? Sólo tiene que añadir –

+0

< and > etiquetas al estilo y el tema, no podía decirlo, ya que estaba haciendo el texto invisible –

+0

Agregue el código anterior en colors.xml en la carpeta de los valores y el código siguiente en styles.xml #FFFFFF # 000000 –

3

que estaba teniendo el mismo problema en una de mis estirable en la que quiero diferentes colores basado en el tema elegido Encontré una solución, eso no resuelve el problema exactamente, pero funciona para mí. En lugar de definir el color en mis estilos, defino todo dibujable como referencia.

En attrs.xml:

<resources> 
    <attr name="myDrawable" format="reference"/> 
<resources> 

Y en mi style.xml:

<style name="style1"> 
    <item name="myDrawable">@drawable/myDrawable1</item> 
<style> 
<style name="style2"> 
    <item name="myDrawable">@drawable/myDrawable2</item> 
<style> 

Por supuesto, es necesario definir dos dibujables en su carpeta estirable, myDrawable1 y myDrawable2, cada uno con el color correcto codificado

Y funciona bien.

+0

Gracias. Soy consciente de esta solución, y la razón por la que quería resolver los atributos para disminuir el número de herramientas que tengo en mi aplicación para mantenerlo manejable ya que ya es demasiado. –

+0

Sí, tengo la misma preocupación, es por eso que llamo a eso una solución alternativa solamente. Todavía estoy interesado en encontrar una solución real también, aunque empiezo a dudar de que exista una, parece cada vez más un error o característica de Android ... – Guillaume

+0

Además, el hecho de que no podamos tener subcarpetas en el dibujo la carpeta es un problema para proyectos medianos a grandes (tengo más de 5000 elementos en uno de mis proyectos ...) – Guillaume

Cuestiones relacionadas