如何在Android主项目的布局中引用库项目中的drawable?

17
我有一个Android图书馆项目,并在其中使用了可重用的可绘制资源。 假设包名称为:com.vijay.mylib; 然后我有一个主项目,它使用上述库项目。 假设其包名称为:com.vijay.myproject
请注意,我已经正确地将库项目链接到我的主项目中。
在我的主项目中,我有一个名为main.xml的布局。 我想在main.xml中使用来自库项目的一些drawable。 我该如何在xml中实现它? 像"@drawable/myImage"这样正常引用并没有起作用。 引用选择器窗口仅显示来自主项目的drawable,而不是来自库项目的drawable。
(注:两个项目的R.java具有不同的软件包。 这会对此有所影响吗?)
3个回答

13

你可能需要添加自己的URI用于库,并使用它来引用drawable。

xmlns:vijay="http://schemas.android.com/apk/res/com.vijay.mylib"

那么你应该可以通过以下方式访问drawable:

@vijay:drawable/myImage

1
你会把xmlns:vijay=...放在清单文件或布局文件的哪个位置? - Lumis
<LinearLayout xmlns:at="http://schemas.android.com/apk/res/com.at.customkeyboardex3" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" ></LinearLayout> 我无法获取 @at:drawable/left,它给出了错误信息 "找不到与之匹配的资源..." - Bhavana Vadodariya
这是我使用的库 com.at.customkeyboardex3, 假设在 com.at.reuse 项目中使用, 所以上述的 XML 文件将位于 com.at.reuse 项目的 res-->layout 文件夹中。 - Bhavana Vadodariya

2
确定库项目和应用程序项目之间使用的可绘制资源的最佳方法是根据设计来进行:
1. 默认情况下,应用程序项目的可绘制资源将替代同名库项目的可绘制资源。因此,确保库项目资源被使用的最佳方法是从应用程序项目中完全删除该资源。
2. 我遇到的另一个问题是,如果您想要首选使用应用程序项目资源,请确保应用程序项目中的可绘制文件夹名称与库项目中的资源文件夹名称完全相同。例如,如果您的库项目资源位于drawable-mdpi中,请确保在应用程序项目中也称为drawable-mdpi

0

在2022年,如果将该库导入到您的项目中,使用起来非常简单,如下图所示。

1- 想要使用它的地方,只需写上R.drawable.any_png

2- 在左侧打开图标,然后选择libraries

3- 您可以看到所有图片都在3,2的两个位置 enter image description here


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