我可以用不同的软件包名称放置我的Android样式吗?

我可以用不同的软件包名称放置我的Android样式吗?,android,android-layout,android-styles,Android,Android Layout,Android Styles,例如,我引用安卓风格与 @android:style/... @style/... 和我自己的应用程序风格与 @android:style/... @style/... 但是我怎样才能把我的风格分成其他的名字呢?e、 g @somePackage:style/... 不幸的是你不能。您可能认为Android库可能会帮助您,但事实并非如此。这是因为在编译资源时,Android库“物理地”合并到主应用程序中 因此,从aapt的角度来看,您的应用程序资源与任何其他Android库资源都是

例如,我引用安卓风格与

@android:style/... 
@style/...
和我自己的应用程序风格与

@android:style/... 
@style/...
但是我怎样才能把我的风格分成其他的名字呢?e、 g

@somePackage:style/...

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

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

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


例如,您的应用程序包名为
com.test.app
,Android库名为
com.test.lib
。该库包含style
testStyle

以下方法不起作用(理论上没有任何方法可以帮助您解决此问题):


虽然这样做很好:

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