android:为R.drawable.variableValue传递的变量

时间:2011-04-22 22:41:28

标签: android

    iv.setImageResource(R.drawable.icon);

这条线对我有用

我可以传递变量值而不是图标 就好像我有10个图像在drawable中,我想决定运行时显示哪个图像 我可以通过变量传递值,并像

一样工作
    String variableValue = imageName;
    iv.setImageResource(R.drawable.variableValue);

3 个答案:

答案 0 :(得分:17)

Resources.getIdentifier()可以解决您的问题。

String variableValue = imageName;
iv.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName()));

答案 1 :(得分:4)

您可以使用数组来定义drawable:

int[] images = new int[2];
images[0] = R.drawables.image1;
images[1] = R.drawables.image2;

然后您可以使用此数组在运行时设置图像:

lv.setImageResource(images[i]);

在这种情况下,0表示第一个图像,或者1表示数组的第二个图像。

答案 2 :(得分:0)

不,它不会那样工作。

在第一行中iconstatic final生成的static final class R.drawable成员,因此尝试将其连接起来就像String一样,会给您带来编译错误。

但你可以尝试使用

iv.setImageURI(uri);

其中uri是图片的URI,因此您可以在此处使用字符串值 此外,根据api文档,使用setImageBitmap是一个更好的解决方案:您应该根据您的资源来考虑它。

<强> APIDocs:

public void setImageURI (Uri uri) 

自:API级别1

  

将此ImageView的内容设置为   指定的Uri。

     

这会进行位图读取和解码   在UI线程上,这可能会导致   潜伏打嗝。如果这是一个问题,   考虑使用   setImageDrawable(Drawable)或   setImageBitmap(Bitmap)和   而是BitmapFactory。

<强>参数
uri图片的Uri