Android : set background of layout using image path

5.7k Views Asked by At

I want to put an image as background of a Layout.

First I am creating a drawable : Drawable d = Drawable.createFromPath("pathToImageFile");

In API level 8 layout.setBackground( d ) is not supported AND layout.setBackgroundDrawable( d ) is deprecated so I need to use

layout.setBackgroundResource(resourceID)

how can I get resourceID of a dynamically generated drawable.I am using this method :

Drawable d = Drawable.createFromPath("pathToImageFile");

to create a drawable.

4

There are 4 best solutions below

4
On BEST ANSWER

Hi use the following method

public void setBackgroundDrawable (Drawable background) 

by calling

imageView.setBackgroundDrawable(drawable);

Added in API level 1

EDIT: try this method

@SuppressWarnings("deprecation")
    private void setRes(ImageView iv,Drawable drawable){
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
            iv.setBackground(drawable);
        else
            iv.setBackgroundDrawable(drawable);
    }
4
On
0
On

For API 1-15 use

view.setBackgroundDrawable(drawable);

For API 16 & above use

viw.setBackground(drawable);
1
On

As explained in the POST by @hasanghaforian,

You can get the resource ID using the "getIdentifier" with the following code:

int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug", null, null);

OR

int resID = getResources().getIdentifier("bug", "drawable", "org.anddev.android.testproject");      

where,

bug.png is the file in "/res/drawable/".

Then you can use layout.setBackgroundResource(resID).