Ответ 1
Как я уже писал в комментарии выше, мне удалось решить мою проблему, очистив проекты и перестроив их.
У меня есть два приложения для Android с аналогичной функциональностью, но с разными чертежами и макетами.
Я хотел бы поместить весь код и ресурсы в проект библиотеки и переопределить некоторые чертежи и макеты в двух приложениях, которые будут ссылаться на эту библиотеку.
Я создал приложение, которое ссылается на библиотеку. Я скопировал все ресурсы из библиотеки в приложение и изменил некоторые чертежи. Я также изменил некоторые из строковых ресурсов. Когда я просматриваю один из измененных макетов в редакторе макета в Eclipse, я вижу правильные переопределенные изображения.
Когда я запускаю приложение, я вижу, что строковые ресурсы, которые я изменил в приложении, отображаются правильно (строки библиотеки переопределены ресурсами приложения), но чертежи моего ImageView
все взяты из ресурсов библиотеки.
Я также внес изменения в некоторые ресурсы макета (перемещены и изменены некоторые изображения). Когда я запускаю действие, которое использует измененный макет (действие, исходный код которого находится в библиотеке), я вижу новый (приложение) макет со старыми (библиотечными) чертежами.
Я попытался определить чертежи ImageView
двумя способами:
в макете xml: android:src="@drawable/image_id"
в коде действия:
ImageView view = (ImageView)findViewById(R.id.viewId);
view.setImageResource(R.drawable.image_id);
В обоих случаях изображение, которое я вижу, берется из ресурсов проекта библиотеки, а не приложения.
Если мне не удастся решить эту проблему, мне придется дублировать весь код в обоих приложениях, что было бы позором.
Я что-то делаю неправильно?
Как я уже писал в комментарии выше, мне удалось решить мою проблему, очистив проекты и перестроив их.
Исходя из моего опыта, вы можете заменить ресурс с возможностью рисования в библиотечном модуле с помощью стиля и refs.xml.
Сначала вам нужно объявить ресурс с возможностью рисования в стиле, например
<style name="drawable_base_style">
<item name="android:src">@drawable/base</item>
</style>
то в приложении (модуль или проект, в зависимости от вашей IDE) переопределите стиль
<style name="drawable_base_style_app">
<item name="android:src">@drawable/app</item>
</style>
и используйте refs.xml, чтобы указать новый стиль.
<item name="drawable_base_style" type="style">@style/drawable_base_style_app</item>
то последний шаг: пересечь пальцы.
Не копируйте-вставьте вещи, просмотрите свой проект, чтобы предоставить Drawable resourceId в качестве параметра для вашего объекта.
Я сделал то же самое и не имел проблем. Изображение отменено.