我有:
String uri = "@drawable/myresource.png";
如何在ImageView中加载? this.setImageDrawable?
答案 0 :(得分:170)
如果你真的需要使用字符串,请尝试这样的事情:
private void showImage() {
String uri = "drawable/icon";
// 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);
}
否则我建议你使用R. *这样的参考文献:
int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);
答案 1 :(得分:25)
首先,不要这样做,因为@drawable
语法在Java代码中毫无意义。使用int resourceId=R.drawable.myresource
。
如果由于某种原因你结束了资源名称并需要整数ID,请在getIdentifier()
对象上使用Resources
。
答案 2 :(得分:10)
你也可以添加你自己的变量..在我的案例scene.name之间我跟着@pfleidi答案。 c代表上下文。
String uri = "drawable/" + scene.name;
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());
imageList.setImageResource(imageResource);
答案 3 :(得分:6)
早已过期,但我最喜欢的是使用Context:
context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)
其中 placeholder_image 是资源的ID。在您的情况下,R.drawable.myresource
。
上下文可以是活动或应用程序。几乎无论你身在何处,都可以参考上下文,你可以使用它来获取应用程序的上下文。
答案 4 :(得分:4)
如果有其他人遇到我遇到的问题,我正在从JSON加载图像名称,然后需要获取标识符。 getIdentifier的第二个参数可以设置为" drawable"。这是@ alia-ramli-ramli回答的一个细微变化......
String uri = details.getString("circle").toLowerCase();
int imageResource = context.getResources().getIdentifier(uri, "drawable", context.getPackageName());
Drawable image = context.getResources().getDrawable(imageResource);
viewHolder.unit_circle.setImageDrawable(image);
答案 5 :(得分:2)
您可以检查here
int resID = mContext.getResources().getIdentifier(stringfilename, "drawable", mContext.getPackageName());
iv_imageview.setImageDrawable(ContextCompat.getDrawable(mContext,resID));
您还可以通过用getIdentifier()方法的“ mipmap”参数替换“ drawable”来从mipmap中检索图像。
答案 6 :(得分:0)
我有同样的问题...已弃用等等。 我用最少的API 14解决了这个问题。
...
...
ImageView imgPoster = viewCache.getImgPoster(resource);
String uri = "drawable/" + film.getPoster();
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
Drawable image = ContextCompat.getDrawable(context, imageResource);
imgPoster.setImageDrawable(image);
return convertView;
...
...