【问题标题】:How to set an imageView's image from a string?如何从字符串中设置 imageView 的图像?
【发布时间】:2011-07-12 08:45:18
【问题描述】:

我在 res/drawable-mdpi 目录中有一个条目列表和一些位图文件。我正在尝试通过生成路径字符串并使用位图工厂来加载与从列表中选择的字符串值相对应的图像。问题是我认为我的路径不正确,因为位图始终为空,即使对于默认图像也是如此。

String name = entries.get(position);
            String img = "res/drawable/logo_" + name.toLowerCase() + ".png"; // create the file name
            icon.setScaleType(ImageView.ScaleType.CENTER_CROP);

            // check to see if the file exists
            File file = new File(img);
            if (file.exists()){

                bm = BitmapFactory.decodeFile(img);
            }
            else{// use the default icon
                bm = BitmapFactory.decodeFile("logo_default.png");
            }

            // set the image and text
            icon.setImageBitmap(bm);

res 目录是否会被复制到设备上?我应该使用什么正确的路径,或者我应该采取不同的方式?

谢谢

【问题讨论】:

标签: android bitmap imageview


【解决方案1】:

不需要使用getDrawable()你直接使用资源id就像

String mDrawableName = "myimageName"; int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); imgView.setImageResource(resID);

【讨论】:

    【解决方案2】:
    ImageView img = (ImageView) findViewById(R.id.{ImageView id});
    img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));
    

    【讨论】:

      【解决方案3】:

      您可以像这样创建通用函数来获取可绘制的图像:

      public static Drawable getDrawable(Context mContext, String name) {
              int resourceId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
              return mContext.getResources().getDrawable(resourceId);
          }
      

      【讨论】:

        【解决方案4】:

        如果您在可绘制文件夹中有图像,那么您的做法是错误的。

        试试这样的

        Resources res = getResources();
        String mDrawableName = "logo_default";
        int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
        Drawable drawable = res.getDrawable(resID );
        icon.setImageDrawable(drawable );
        

        【讨论】:

        • getDrawable() 已弃用。
        • 试试 Drawable drawable = ContextCompat.getDrawable(getContext(), resID);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 2012-09-19
        • 2011-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多