Intereting Posts

Как переопределить чертежи, определенные в проекте библиотеки Android?

У меня есть два Android-приложения с аналогичной функциональностью, но с различными чертежами и макетами.

Я хотел бы поместить весь код и ресурсы в проект библиотеки и переопределить некоторые чертежи и макеты в двух приложениях, которые будут ссылаться на эту библиотеку.

Я создал приложение, которое ссылается на библиотеку. Я скопировал все ресурсы из библиотеки в приложение и изменил некоторые из чертежей. Я также изменил некоторые из строковых ресурсов. Когда я просматриваю один из измененных макетов в редакторе макетов в Eclipse, я вижу правильные переопределенные изображения.

Когда я запускаю приложение, я вижу, что строковые ресурсы, которые я изменил в приложении, отображаются корректно (строки библиотеки переопределены ресурсами приложения), но чертежи моих ImageView s взяты из ресурсов библиотеки.

Я также внес изменения в некоторые ресурсы макета (перемещены и изменены некоторые изображения). Когда я запускаю действие, которое использует измененный макет (действие, исходный код которого находится в библиотеке), я вижу новый (приложение) макет со старыми (библиотечными) чертежами.

Я попытался определить чертежи ImageView s двумя способами:

  1. В макете xml: android:src="@drawable/image_id"

  2. В коде деятельности:

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

В обоих случаях изображение, которое я вижу, берется из ресурсов проекта библиотеки, а не приложения.

Если мне не удастся решить эту проблему, мне придется дублировать весь код в обоих приложениях, что было бы позором.

Я делаю что-то неправильно?

Solutions Collecting From Web of "Как переопределить чертежи, определенные в проекте библиотеки Android?"

Основываясь на моем опыте, вы можете заменить выделяемый ресурс в библиотечном модуле, используя стиль и 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 в качестве параметра для вашего объекта.

Как я уже писал в комментарии выше, мне удалось решить мою проблему, очистив проекты и перестроив их.

Я сделал то же самое и не испытывал никаких проблем. Изображение отменено.