Ho un set di applicazioni simili. Ho estratto risorse e codice comuni nel progetto della biblioteca e le applicazioni hanno appena scavalcato quello di cui hanno bisogno. Nella mia biblioteca c'è il seguente stile definito:Come sovrascrivere (o nascondere) gli attributi di stile definiti nel progetto di libreria Android?
<style name="ListItemText">
<item name="android:layout_toRightOf">@id/preview_image</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/previewTextSize</item>
</style>
Come si può vedere in essa contenuti android:layout_toRightOf
attributo come questo stile sarebbe applicato al testo nella riga ListView che dovrebbe essere visualizzato a destra dell'immagine in quel riga.
Tuttavia in una delle mie applicazioni mi piacerebbe visualizzare il testo sotto l'immagine. Come deve essere definito lo stile ListItemText
in quell'applicazione per sovrascrivere il valore dell'attributo android:layout_toRightOf
e sostituirlo con android:layout_below
?
Se io definisco come:
<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>
visualizza testo alla destra e sotto l'immagine, in modo efficace riassumendo gli attributi di entrambe le biblioteche e gli stili di applicazione XMLs.
p.s .: Una possibile soluzione del mio problema sarebbe quella di eliminare lo android:layout_toRightOf
negli stili e spostarlo invece sul layout xml. Quindi nell'applicazione di destinazione questo layout può essere ridefinito/sovrascritto. Ma sto cercando una soluzione basata sullo stile, dal momento che potrebbe fornire un metodo più semplice e diretto per l'override degli attributi.
(È inoltre possibile utilizzare lo stile ereditato con l'attributo parent
, ma ciò richiederebbe nuovamente la sovrascrittura del layout nell'applicazione, che cerco di evitare).
Sto facendo qualcosa di simile QUI !!! http://stackoverflow.com/questions/17103894/overriding-referenced-style-attributes – toobsco42