Tengo un conjunto de aplicaciones similares. Extraje los recursos y el código comunes para el proyecto de la biblioteca y las aplicaciones simplemente anulan lo que necesitan. En mi biblioteca existe el siguiente estilo definido:Cómo anular (u ocultar) los atributos de estilo definidos en el proyecto de la biblioteca de 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>
Como se puede ver que contiene android:layout_toRightOf
atributo ya que este estilo se aplica al texto en la fila ListView que debe ser representada a la derecha de la imagen en la que se fila.
Sin embargo, en una de mis aplicaciones me gustaría mostrar el texto debajo de la imagen. ¿Cómo se debe definir el estilo ListItemText
en esa aplicación para anular el valor del atributo android:layout_toRightOf
y reemplazarlo por android:layout_below
?
Si yo defino como:
<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>
que muestra el texto a la derecha y debajo de la imagen, sumando efectivamente los atributos de ambos estilos aplicación de biblioteca y XMLs.
p.s .: Una posible solución a mi problema sería deshacerse de android:layout_toRightOf
en los estilos y moverlo al formato xml. Luego, en la aplicación de destino, este diseño se puede redefinir/anular. Pero estoy buscando una solución basada en el estilo, ya que podría proporcionar una forma más simple y directa de anulación de atributos.
(también puedo usar el estilo heredado con el atributo parent
, pero esto requeriría de nuevo una anulación de diseño en la aplicación, que trato de evitar).
estoy haciendo algo similar aquí !!! http://stackoverflow.com/questions/17103894/overriding-referenced-style-attributes – toobsco42