2013-12-18 67 views
6

我想将图像作为布局的背景。Android:设置使用图像路径的布局背景

首先我创建一个可绘制:Drawable d = Drawable.createFromPath("pathToImageFile");

API级别8layout.setBackground(d)不支持layout.setBackgroundDrawable(d)已过时,所以我需要使用

layout.setBackgroundResource(resourceID)

怎么能我得到一个动态生成的drawable的resourceID。我正在使用这种方法:

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

创建一个drawable。

回答

2

喜用下面的方法

public void setBackgroundDrawable (Drawable background) 

通过API调用级

imageView.setBackgroundDrawable(drawable); 

新增1

编辑: 试试这个方法

@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); 
    } 
+0

此方法已弃用,我可以使用它吗?在日食中它显示了代码罢工。 – ZZeyaNN

+0

这种方法在api级别16中被删除,直到API级别15,它将工作grt –

+0

但是对于更高版本,我的应用程序将不起作用。 – ZZeyaNN

0

对于上面使用的API 1-15使用

view.setBackgroundDrawable(drawable); 

对于API 16 &

viw.setBackground(drawable); 
0

正如POST通过@hasanghaforian解释,

您可以使用“获取资源ID getIdentifier“与以下代码:

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

OR

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

其中,

bug.png是 “/res/drawable/” 的文件。您可以使用layout.setBackgroundResource(resID)

+0

因为我们正在动态创建** drawable **我们不知道它的名字,在这种情况下是“bug”。 – ZZeyaNN