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

@android:style/...

和我自己的应用样式...
@style/...

但是如何将样式分成其他名称包?例如
@somePackage:style/...

最佳答案

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

因此,从aapt的角度来看,您的应用程序资源与任何其他Android Library资源都没有区别。甚至更多,aapt接收多个资源目录作为输入(例如,应用程序的res路径,以及来自引用Android库的所有res目录的路径),但同时只有来自应用程序的单个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" .../>

09-26 14:14