2012-05-21 18 views
15

Tengo dos aplicaciones de Android con una funcionalidad similar pero con distintos diseños y diagramas.¿Cómo sobrescribir los estilos definidos en un proyecto de biblioteca de Android?

Me gustaría poner todo el código y los recursos en un proyecto de biblioteca y anular algunos de los dibujos y diseños en las dos aplicaciones que harían referencia a esa biblioteca.

Creé una aplicación que hace referencia a la biblioteca. Copié todos los recursos de la biblioteca a la aplicación y cambié algunos de los dibujables. También cambié algunos de los recursos de cadena. Cuando veo uno de los diseños modificados en el editor de diseño en Eclipse, veo las imágenes anuladas correctas.

Cuando inicio la aplicación veo que los recursos de cadena que cambió en la aplicación se muestran correctamente (las cuerdas de la biblioteca son anulados por los recursos de la aplicación), pero los dibujables de mis ImageView s son tomados de los recursos de la biblioteca

También realicé cambios en algunos de los recursos de diseño (moví y cambié el tamaño de algunas imágenes). Cuando abro una actividad que usa el diseño modificado (una actividad cuyo código fuente está en la biblioteca), veo el nuevo diseño (aplicación) con los antiguos (biblioteca) de los elementos extraíbles.

he intentado definir los dibujables de los ImageView s de dos maneras:

  1. en el xml diseño: android:src="@drawable/image_id"

  2. en el código de la actividad:

    ImageView view = (ImageView)findViewById(R.id.viewId); 
    view.setImageResource(R.drawable.image_id); 
    

En ambos casos, la imagen que veo se toma de los recursos del proyecto de la biblioteca y no de la aplicación.

Si no logro resolver este problema, tendré que duplicar todo el código en ambas aplicaciones, lo que sería una pena.

¿Estoy haciendo algo mal?

+0

He votado a favor de su pregunta, porque me parece muy útil, especialmente con su propia respuesta, incluida en los comentarios. Creo que el uso de sobresalientes es un enfoque tan importante como los métodos primordiales, y hace las cosas mucho más sencillas y simplificadas. No hay necesidad de ningún parámetro y codificación excesivos. – Stan

Respuesta

2

Como escribí en un comentario anterior, logré resolver mi problema limpiando los proyectos y reconstruyéndolos.

+1

No estoy seguro de para qué sirve el downvote. Esta respuesta resolvió mi problema. De lo contrario, no lo publicaría aquí. – Eran

+1

Su "solución" no proporciona tales detalles de lo que hace exactamente mientras "limpia los proyectos y los reconstruye". ¿Eliminas algunos recursos de tus manos? ¿Realizas la tarea limpia de Gradle? – StAlex

+0

@StAlex Ha pasado mucho tiempo desde que publiqué esto, así que no recuerdo los detalles, pero creo que limpié los proyectos en mi Eclipse IDE y los reconstruí. "limpiar" es una operación que puede realizar en un proyecto de Eclipse. – Eran

1

No copie y pegue cosas, revise su diseño para dar resourceId Drawable como un parámetro a su objeto.

4

Según mi experiencia, puede reemplazar el recurso dibujable en el módulo de la biblioteca utilizando estilo y refs.xml.

En primer lugar tiene que declarar el recurso estirable en un estilo, como

<style name="drawable_base_style"> 
    <item name="android:src">@drawable/base</item> 
</style> 

continuación, en la aplicación (módulo o proyecto, en función de su IDE), redefinir un estilo

<style name="drawable_base_style_app"> 
    <item name="android:src">@drawable/app</item> 
</style> 

y el uso refs.xml señalar con el nuevo estilo.

<item name="drawable_base_style" type="style">@style/drawable_base_style_app</item> 

entonces el último paso: cruzar los dedos.

0

Hice lo mismo y no tuve ningún problema. Imagen anulada

Cuestiones relacionadas