3

我知道存在以这样的代码从另一个包安装资源 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文档中解释:

可能是对另一个资源的引用,形式为“@[+][package:]type:name”或主题属性的形式为“?[package:][type:]name”。

我试图指定这样的东西:

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

或这个:

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

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

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

4

2 回答 2

1

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

图书馆项目

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

有关更多信息,请查看主题库项目下的链接。

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

您的库项目将勾选一个复选框,如项目中所示。

在此处输入图像描述

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

在此处输入图像描述

于 2013-04-07T15:05:18.593 回答
0

根据您忘记在@ 之后添加+ 的文档。最后在可绘制格式中输入错误:应该替换为/

这应该是正确的选择:

android:background="@+com.my.skin:drawable/background_image"
于 2022-01-26T16:50:44.893 回答