Могу ли я разместить свои стили Android под разными именами пакетов? - PullRequest
6 голосов
/ 09 августа 2011

Например, я ссылаюсь на стили Android с помощью ...

@android:style/... 

, а мои собственные стили приложений с помощью ...

@style/...

, но как я могу разделить мои стили на другие имена?пакеты?например,

@somePackage:style/...

1 Ответ

3 голосов
/ 09 августа 2011

К сожалению, вы не можете.Вы можете подумать, что библиотеки Android могут вам помочь, но это не так.Это потому, что библиотеки Android «физически» объединяются в основное приложение при компиляции ресурсов.

Таким образом, с точки зрения aapt ресурсы вашего приложения неотличимы от любых других ресурсов библиотеки Android.Более того, aapt получает несколько каталогов ресурсов в качестве входных данных (т. Е. Путь к res для приложения, плюс пути ко всем res каталогам из ссылок на библиотеки Android), но в то же время передается только один AndroidManifest.xml из приложениякак «владелец» этих ресурсов.

Что я хочу сказать, это то, что, хотя вы можете логически группировать ресурсы (например, стили) в отдельные библиотеки Android, вы все равно не можете ссылаться на них, используя имена пакетов этих библиотек Android.Только используя имя пакета основного приложения.


Например, у вас есть приложение с именем пакета com.test.app и библиотека Android с com.test.lib.И библиотека содержит стиль testStyle.

Следующее не работает (и теоретически ничто не может помочь вам обойти это):

<TextView style="@com.test.lib:style/testStyle" .../>

Хотя это работает нормально:

<TextView style="@com.test.app:style/testStyle" .../>
...