无法在应用程序中使用png资源覆盖库的xml资源?

l33*_*33t 20 resources android library-project

我有一个Android库,MyLib其中包含我的应用所需的一切(针对Android 2.2).该库具有XML资源:

drawable/main_background.xml
Run Code Online (Sandbox Code Playgroud)

在我的应用程序MyApp项目中我引用MyLib.在这里,我想覆盖特定的资源(即品牌).所以我添加了一个背景图片MyApp:

drawable/main_background.png
Run Code Online (Sandbox Code Playgroud)

Eclipse不断给我这个错误:

[com.mycom.mylib.myapp] res\drawable\main_background.xml:0: error: Resource entry main_background is already defined.
[com.mycom.mylib.myapp] res\drawable\main_background.png:0: Originally defined here.
Run Code Online (Sandbox Code Playgroud)

如何覆盖库项目中的资源?

Fen*_*res 11

您不能简单地使用Android SDK中具有不同扩展名的文件覆盖资源ID(它是您要覆盖的资源ID,而不是实际文件).但是,您可以通过放入具有相同名称(main_background.xml)的项目xml文件来完成这一操作,并以适当的方式填充它以显示您main_background.png需要先重命名的新文件().您需要的所有语法都在这里描述:

http://developer.android.com/guide/topics/resources/drawable-resource.html

,在你的情况下它可能是简单的(假设你将它放在你的非库项目中main_background.xml,并且你有新的png main_background_new.png):

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/main_background_new" />
Run Code Online (Sandbox Code Playgroud)

使用上述解决方案,您可以@drawable/main_background从您的项目中引用,它应该使用该项目中包含的文件,而不是库项目.