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

问题描述:

我知道,存在从另一个包中的代码安装资源的XML文件中像这样的能力:如何从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和绘图资源:

例如:我有两个应用:

  • 应用主要与包 “com.my.main
  • 和应用皮肤与包 “com.my.skin

在机器人docs解释:

可能到另一个资源的引用,在形式 “@〔 +] [包装:]类型:名称“或形式为 ”?[包装:] [类型:]名称“的主题属性。

我试图像这样指定的东西:

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

或本:

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

,但它不工作,我的资源文件不编译。

谁知道如何使用明确的规格加载资源。

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

库项目

这些项目包含可共享的Android 源代码资源,你可以在Android中的参考项目。当您想要重复使用通用代码时,这非常有用。库项目无法安装到设备上,但是,它们在构建时被拉到.apk文件中。

欲了解更多信息,看看主题图书馆项目下的链接。

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

你的库项目将有打勾为显示在项目的复选框。

enter image description here

你可以到你的Android项目添加库项目。右键点击你的项目。转到属性。在左侧面板上选择Android。

enter image description here