我可以将我的Android样式放在不同的包名中吗?

时间:2011-08-09 10:19:43

标签: android android-layout android-styles

例如我用...引用android样式

@android:style/... 

和我自己的应用程序样式......

@style/...

但是如何将我的样式分成其他名称包呢?例如

@somePackage:style/...

1 个答案:

答案 0 :(得分:3)

不幸的是你做不到。您可能认为Android库可能会对您有所帮助,但事实并非如此。这是因为在编译资源时,Android库“物理地”合并到主应用程序中。

因此,从aapt的角度来看,您的应用程序的资源与任何其他Android库资源都无法区分。更重要的是,aapt接收多个资源目录作为输入(即应用程序的res路径,以及来自引用Android库的所有res目录的路径),但同时只有单个{来自应用程序的{1}}作为这些资源的“所有者”传递。

我想说的是,即使您可以将资源(例如样式)逻辑分组到单独的Android库中,您仍然无法使用这些Android库的包名称来引用它们。仅使用主应用程序的包名称。


例如,您的应用程序包名为AndroidManifest.xml,Android库包含com.test.app。该库包含样式com.test.lib

以下不起作用(理论上没有什么可以帮助您解决此问题):

testStyle

虽然这很好用:

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