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

6
例如,我使用以下方式引用 Android 样式...
@android:style/... 

以及我的应用程序样式与...

@style/...

但是我如何将我的样式分离到其他名称的包中呢?例如:
@somePackage:style/...
1个回答

3
很遗憾,您不能这样做。您可能会认为Android库可以帮助您,但实际上不是这样的。这是因为在编译资源时,Android库被“物理”合并到主应用程序中。
因此,在aapt的视图中,您的应用程序资源与任何其他Android库资源无法区分。更重要的是,aapt将多个资源目录作为输入(即应用程序的res路径加上来自引用Android库的所有res目录的路径),但同时仅传递单个应用程序的AndroidManifest.xml作为这些资源的“所有者”。
我的意思是,即使您可以将资源(如样式)逻辑上分组到单独的Android库中,您仍然无法使用这些Android库的包名称引用它们。只能使用主应用程序的包名称。
例如,您有一个包名为com.test.app的应用程序和一个包含testStyle样式的com.test.lib Android库。
以下内容不起作用(理论上没有任何东西可以帮助您解决此问题):
<TextView style="@com.test.lib:style/testStyle" .../>

虽然这样运行良好:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接