【问题标题】:setImageResource from a string来自字符串的 setImageResource
【发布时间】:2011-07-21 21:56:57
【问题描述】:

我想根据我的字符串更改 imageview src,我有这样的东西:

ImageView imageView1 = (ImageView)findViewById(R.id.imageView1);

String correctAnswer = "poland";
String whatEver = R.drawable+correctAnswer;
imageView1.setImageResource(whatEver);

当然不行。如何以编程方式更改图像?

【问题讨论】:

    标签: java android


    【解决方案1】:
    public static int getImageId(Context context, String imageName) {
        return context.getResources().getIdentifier("drawable/" + imageName, null, context.getPackageName());
    }
    

    使用: imageView1.setImageResource(getImageId(this, correctAnswer);

    注意:去掉扩展名(例如,“.jpg”)。

    示例:图片为“abcd_36.jpg”

    Context c = getApplicationContext();
    int id = c.getResources().getIdentifier("drawable/"+"abcd_36", null, c.getPackageName());
    ((ImageView)v.findViewById(R.id.your_image_on_your_layout)).setImageResource(id);
    

    【讨论】:

    • 对于图像名,我们是要传递像“news.png”这样的全名还是只传递没有扩展名的图像名作为“news”?我都尝试了,但都没有为我工作。
    • 我无法使以下工作。我发现stackoverflow.com/a/4313064/2895831int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");,它使用“drawable”作为第二个参数getIdentifier(String name, String defType, String defPackage)
    【解决方案2】:

    我不知道这是否是您的想法,但是您可以设置图像 id(它们是整数)和正确答案字符串的 HashMap。

        HashMap<String, Integer> images = new HashMap<String, Integer>();
        images.put( "poland", Integer.valueOf( R.drawable.poland ) );
        images.put( "germany", Integer.valueOf( R.drawable.germany ) );
    
        String correctAnswer = "poland";
        imageView1.setImageResource( images.get( correctAnswer ).intValue() );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-09-11
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多