如何从xml中的另一个包加载资源?

时间:2013-04-07 14:58:27

标签: android xml layout resources drawable

我知道存在从另一个软件包安装资源xml文件的能力,如下所示:

String resourceName = getResources().getResourceEntryName(layoutResID);
String resourceTypeName = getResources().getResourceTypeName(layoutResID);
Resources skinResources = getResourcesForPackage("com.my.skin");
int skinResourceId = skinResources.getIdentifier(resourceName, resourceTypeName, "com.my.skin");
mLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mLayoutInflater.inflate(skinResources.getXml(skinResourceId), null);
super.setContentView(mLayoutInflater.inflate(skinResources.getXml(skinResourceId), null));

但我想知道如何在xml和drawable资源中制作相同的内容:

例如:我有两个应用程序:

  • 应用主要,包“ com.my.main
  • 和应用程序皮肤包“ com.my.skin

在android docs中解释:

  

可以是表单中对其他资源的引用   “@ [+] [package:] type:name”或表单中的主题属性   “[包:] [类型:]名称”。

我试图指定类似的内容:

android:background="@com.my.skin:drawable:background_image"

或者这个:

android:background="?com.my.skin:drawable:background_image"

但它不起作用,我的资源文件没有编译。

谁知道如何使用显式规范加载资源。

1 个答案:

答案 0 :(得分:1)

使您的项目成为一个库项目,您可以在另一个Android项目中引用它。

图书馆计划

这些项目包含可在Android项目中引用的可共享的Android 源代码资源。当您拥有要重用的公共代码时,这非常有用。库项目无法安装到设备上,但是,它们会在构建时被拉入.apk文件。

有关详细信息,请查看图书馆计划

主题下的链接

http://developer.android.com/tools/projects/index.html

您的图书馆项目将勾选一个复选框,如项目所示。

enter image description here

您可以将库项目添加到您的android项目中。右键单击您的项目。转到属性。在左侧面板中选择Android。

enter image description here