Stityling Views personalizzati
-
27-10-2019 - |
Domanda
Ho alcune visualizzazioni personalizzate nel mio progetto Android e ho aggiunto i dettagli pertinenti al file ATR.XML. E ora posso implementare i miei oggetti tramite XML. Funziona bene.
Come si modellino questi elementi? Quando provo a utilizzare i miei attributi personalizzati in Styles.xml è un errore "Nessuna risorsa trovata che corrisponde al nome dato:"
Per l'utilizzo delle visualizzazioni personalizzate nel normale sviluppo XML utilizzo xmlns: app = "http://schemas.android.com/apk/res/bla.bla.bla". Qual è il corretto da utilizzare negli stili?
Questo è l'aspetto del mio stile attualmente
<style name="Journey_DaySelect_Sunday">
<item name="app:onImage">@drawable/day_sunday_selected</item>
<item name="app:offImage">@drawable/day_sunday</item>
</style>
Soluzione
Dopo una ricerca più intensa su Google ho rinunciato a trovarlo rispondeva altrove e per caso Ho provato a usare lo spazio dei nomi assoluto del mio file R generato ha funzionato. Possa questo risolvere tutti i tuoi problemi.
Usa lo spazio dei nomi contenente il tuo file R
<style name="Journey_DaySelect_Sunday" parent="Journey_DaySelect">
<item name="AppZappy.NIRailAndBus:onImage">@drawable/day_sunday_selected</item>
<item name="AppZappy.NIRailAndBus:offImage">@drawable/day_sunday</item>
</style>
Altri suggerimenti
Per chiarimenti, l'attributo del nome dell'articolo dovrebbe essere lo stesso di quello che è nell'attributo Nome Dichiarabile di ATR.XML + ":" + il nome dell'attributo.
Per esempio:
ATRS.XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.chuck.norris">
<attr name="actionBarTextColor" format="color"/>
</declare-styleable>
</resources>
style.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="myNewStyle">
<item name="android:textColor">#FFFF0000</item>
<item name="com.chuck.norris:actionBarTextColor">#ffff0000</item>
</style>
</resources>
Puoi quindi applicare questo stile a tutte le attività utilizzando un tema nel tuo file manifest.xml. Ovunque esista una vista personalizzata che desideri utilizzare l'attributo "ActionBartextColor", è quindi possibile utilizzare il codice Java:
TypedArray typedArray = context.obtainStyledAttributes(attrSet, R.styleable.com_chuck_norris);
COLOR_ACTION_BAR_TEXT = typedArray.getColor(R.styleable.com_chuck_norris_actionBarTextColor, 0xff0000ff);
typedArray.recycle();
Non sono sicuro del motivo per cui non puoi semplicemente definire il tuo schema nel tuo file Style.xml come è stato chiesto sopra, ma sembra essere una limitazione di Style.xml.
Prova questa soluzione
<style name="Journey_DaySelect_Sunday">
<item name="onImage">@drawable/day_sunday_selected</item>
<item name="offImage">@drawable/day_sunday</item>
</style>
Se voi ragazzi lo pensano utile, lo tradurrò.