Ho una domanda sull'utilizzo di riferimenti in un layer-list
drawable
.Riferimento colore in <item> -Tag, all'interno <layer-list>
Desidero utilizzare un pulsante personalizzato nella mia app, costituito da un layer-list
.
- Quella è la finale drawable
btn.xml
per il pulsante, fatto di unselector
:
<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>
- Il pressato-stato-drawable
btn_pressed
sembra che:
<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 essenziale è la linea, wh prima dichiaro il colore come riferimento a custom_color
, che definisco come segue.
- 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 mi dà errori a tutti, e si compila bene. Ma quando avvio l'applicazione sul mio ICS Nexus S o sull'emulatore (indipendentemente dalla versione), si blocca. punti logcat il seguente out:
03-23 14: 33: 38,832: E/AndroidRuntime (636): a causa di: android.content.res.Resources $ NotFoundException: res file/drawable/btn.xml da ID di risorsa drawable # 0x7f020006
[...]
03-23 14: 33: 38,832: E/AndroidRuntime (636): a causa di: android.content.res.Resources $ NotFoundException: res file/drawable/btn_pressed.xml dall'ID risorsa drawable # 0x7f020009
Se commento o ut, il shape
-elemento nel layer-list
, o impostare il colore hard-coded, tutto funziona. Quindi sembra esserci un problema nel fare riferimento agli attributi in un elenco di livelli.
Quindi qualcuno conosce una soluzione a questo problema? Voglio cambiare i colori in quella lista di livelli, a seconda del tema, che la mia applicazione sta usando.
Questo non ha funzionato, no. Non viene nemmeno compilato. – msal