如何从字符串设置 imageView 的图像?

发布于 2024-10-21 01:10:28 字数 803 浏览 2 评论 0 原文

我在 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 目录是否被复制到设备上?我应该使用什么正确的路径,或者我应该以不同的方式处理这个问题?

谢谢

I have a list of entries and some bitmap files in the res/drawable-mdpi directory. I'm trying to load the image corresponding to the string value selected from the list by generating a path string and using bitmap factory. The problem is I don't think my path is right because the bitmap is always null, even for the default image.

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);

Does the res directory even get copied onto the device? What is the correct path I should be using, or should I be going about this differently?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

栖竹 2024-10-28 01:10:28

如果您的图像位于可绘制文件夹中,那么您的处理方式是错误的。

尝试这样的事情

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

if you have the image in the drawable folder you are going about this the wrong way.

try something like this

Resources res = getResources();
String mDrawableName = "logo_default";
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resID );
icon.setImageDrawable(drawable );
野心澎湃 2024-10-28 01:10:28

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

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

No need to use getDrawable() you directly use the resource id like

Resources res = getResources();
String mDrawableName = "myimageName";
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
imgView.setImageResource(resID);`
几味少女 2024-10-28 01:10:28
ImageView img = (ImageView) findViewById(R.id.{ImageView id});
img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));
ImageView img = (ImageView) findViewById(R.id.{ImageView id});
img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));
空城旧梦 2024-10-28 01:10:28

您可以创建通用函数来获取可绘制的图像,如下所示:

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

You can Create Common Function for getting image drawable like this:

public static Drawable getDrawable(Context mContext, String name) {
        int resourceId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
        return mContext.getResources().getDrawable(resourceId);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文