Android ImageView设置图像源

时间:2013-01-11 20:20:35

标签: java android android-imageview

我正在尝试设置图片的来源,但是我收到了错误消息。

String test1 = pref.getString("test", "ERROR");
String drawable1 = "R.drawable."+test1;
myImage.setImageResource(drawable1);

我已尝试设置int drawable1 = "R.drawable."+test1;,但仍然无效。我知道这是类型的不匹配,但我似乎无法找到一种方法来完成它。

您似乎可以进一步解决问题并说明如何使这项工作?

String drawable1 = "R.drawable.myImage";
myImage.setImageResource(drawable1);

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

  

我已尝试设置int drawable1 = "R.drawable."+test1;,但仍然无效。

您需要使用getIdentifier()从字符串中正确构建资源ID:

int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName());

(现在还有另外两个答案表明同样的事情......我是否错过了某些内容,或者他们只是想重复已经陈述过的内容?)


请注意,如果您的图片很大或在加载setImageResources()上的文档时导致明显的延迟,则会有其他建议:

  

这会在UI线程上进行Bitmap读取和解码,这会导致延迟打嗝。如果这是一个问题,请考虑使用setImageDrawable(android.graphics.drawable.Drawable)setImageBitmap(android.graphics.Bitmap)BitmapFactory代替。

答案 1 :(得分:0)

假设您有context(如果代码在活动中,请使用this

int resId = context.getResources().getIdentifier(test1 , "drawable", cw.getPackageName());
myImage.setImageResource(resId);

答案 2 :(得分:0)

使用

 int drawable1 =  getResources().getIdentifier(test1, "drawable", getPackageName();

要了解有关如何按名称获取资源的详情,请参阅此link