我的项目中有一些图片。图像的名称存储在String中,我想设置setImageResource(R.drawable。“.....”);使用图像名称的字符串,但问题是这不起作用。
我该怎么做?
答案 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));