如何从另一个包在XML加载资源?(How to load resource from another

2019-08-20 03:15发布

我知道,存在从另一个包中的代码安装资源的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”

在Android的文档解释:

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

我试图说明是这样的:

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

或这个:

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

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

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

Answer 1:

让你的项目库项目,你可以参考它在另一个机器人项目。

库项目

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

欲了解更多信息,看看在主题库项目下的链接

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

库项目将有一个复选框勾选如图所示的项目。

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



文章来源: How to load resource from another package in xml?