2012-03-23 7 views
5

Tengo una pregunta sobre el uso de referencias en un layer-listdrawable.Color de referencia en <item> -Tag, en el interior <layer-list>

Quiero usar un botón personalizado en mi aplicación, hecho de un layer-list.

  • Esa es la final btn.xml estirable para el botón, hecho de un selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_normal"/> 
</selector> 
  • La presionado por el estado embutición btn_pressed parece que:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="?custom_color" /> 
     </shape> 
    </item> 
    <item android:drawable="@drawable/btn_normal"/> 
</layer-list> 

La parte esencial es la línea, wh Antes declaro que el color es una referencia al custom_color, que defino de la siguiente manera.

  • attrs.xml:
<resources> 
    <attr name="custom_color" format="reference|color" /> 
</resources> 
  • themes.xml:
<resources> 
    <style name="MyTheme" parent="android:Theme.Light.NoTitleBar"> 
     <item name="custom_color">#ff33b5e5</item> 
    </style> 
</resources> 

Eclipse me da ningún error en absoluto, y que compila bien. Pero cuando inicio la aplicación en mi ICS Nexus S, o el emulador (no importa qué versión), se bloquea. puntos LogCat a cabo el siguiente:

03-23 ​​14: 33: 38.832: E/Android Runtime (636): Causado por: android.content.res.Resources $ NotFoundException: res Archivo/estirable/btn.xml de Identificación de recursos dibujable # 0x7f020006

[...]

03-23 ​​14: 33: 38.832: E/Android Runtime (636): Causado por: android.content.res.Resources $ NotFoundException: res archivo/drawable/btn_pressed.xml del recurso dibujable ID # 0x7f020009

Si comento o ut, el shape -el elemento en el layer-list, o establece el color codificado, todo funciona. Entonces parece que hay un problema al hacer referencia a los atributos en una lista de capas.

Entonces, ¿alguien sabe la solución a este problema? Quiero cambiar los colores en esa lista de capas, dependiendo del tema, que está usando mi aplicación.

Respuesta

1

Ok, parece que esto es un error que no se observó hasta el Android L.
Más detalles sobre el gestor de incidencias Android: Issue 26251

Se debe fijarse en Android L, pero al menos probando con la Vista previa de Android L en el Emulador, parece que aún no funciona del todo.Al menos no bloqueará la aplicación, pero en lugar de mostrar el color correcto, simplemente me da transparencia (# 00ffffff). Tal vez este no es el caso en los dispositivos y/o una vez que se lanza Android L estable.

0

Trate android:color="@color/custom_color"

+0

Eso no funcionó, no. Ni siquiera compila. – msal