testCoder
testCoder

Reputation: 7385

How to load resource from another package in xml?

I know that exists ability to install resource xml file from another package in code like this:

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));

But i would like to know how to make the same but in xml and for drawable resources:

For example: I have two applications:

In android docs explained:

May be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

I have tried to specify something like this:

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

or this:

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

but it not work, my resource file not compiled.

Who know how to load resource using explicit specification.

Upvotes: 4

Views: 3073

Answers (2)

Dmitry
Dmitry

Reputation: 425

According to documentation you forgot to add + after @. And there is a mistype in drawable format last : should be raplaced to /

This should be the correct option:

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

Upvotes: 0

Raghunandan
Raghunandan

Reputation: 133580

Make your project a library project and you can refer it in another android project.

Library Projects

These projects contain shareable Android source code and resources that you can reference in Android projects. This is useful when you have common code that you want to reuse. Library projects cannot be installed onto a device, however, they are pulled into the .apk file at build time.

For more information have a look at the link under the topic Library Projects.

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

Your library project will have a check box ticked as shown in the project.

enter image description here

You can add library project to your android project. Right click on your project. Goto properties. Choose Android on the left panel.

enter image description here

Upvotes: 1

Related Questions