如何替换R.drawable。“someString”

时间:2012-02-28 11:49:27

标签: android android-imageview

我的项目中有一些图片。图像的名称存储在String中,我想设置setImageResource(R.drawable。“.....”);使用图像名称的字符串,但问题是这不起作用。

我该怎么做?

6 个答案:

答案 0 :(得分:53)

这不是一个正确的语法,并且你必须得到编译器时间错误,在改变图像资源之前你必须知道,所有资源都提供了一个id,这些id存储在R.java文件中。 Ids存储为整数格式,在您的应用程序中,您可以通过这些ID获取所有这些资源,而不是按名称获取,因此您需要首先获取资源ID,通过:

String mDrawableName = "myimg";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

然后使用此resID。

答案 1 :(得分:10)

使用

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())

答案 2 :(得分:2)

thread。它应该对你有所帮助。基本上,您需要获取标识符,然后使用setImageResource加载。

答案 3 :(得分:1)

public int getIdentifier(String name,String defType,String defPackage);

name - 图像的名称
defType - 它适用于您的情况
defPackage - 你的app的默认包(我想你可以在活动上使用getPackage())

答案 4 :(得分:0)

试试这个

   String uri = "NAME";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);

答案 5 :(得分:0)

我通过移动“可绘制的”图像来实现它的工作。到' raw'文件夹并访问字符串值,如下所示。 如果你没有' raw'文件夹下的' res'目录,右键单击res-> new-> Android资源目录,在资源类型下拉列表中选择' raw'。

    String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));