android - 无法通过代码动态改变ImageView

标签 android imageview

我想明白,为什么我不能从我的 imageView 中动态更改可绘制资源。

我有不同的用例,根据这些用例的功能,我必须更改我的 imageView。在我的代码中,我尝试了以下这些解决方案,但无法刷新 imageView。它保留首先定义的默认可绘制资源。这是我尝试过的:

int imgRes = activity.getResources().getIdentifier("packageName:drawable/"+"my_drawable_name", null, null);
OR
int imgRes = activity.getResources().getIdentifier("drawable/"+"my_drawable_name", "drawable", activity.getPackageName());

imageIcon.setImageResource(imgRes);
imageIcon.invalidate();

还有:

imageIcon.setImageDrawable(null);  
imageIcon.setImageDrawable(activity.getResources().getDrawable(R.drawable.my_drawable_name));
imageIcon.invalidate();

我在一个适配器中,我将这个 ImageView 从我的 Activity 传递到我的适配器。我正在从这个适配器执行此操作,它是我的 imageView 的实例。

所以我尝试更改此资源 my_drawable_name 但在上述两种情况下,我的 imageView 永远不会更新/刷新,并且其图像资源不会更改。我没有错误,它只是不起作用。难道我做错了什么 ?通过代码从 ImageView 动态更改资源的最佳做法是什么?

最佳答案

无需追加可绘制目录。根据设备获取最适合的 drawable 是 android 的默认行为。

尝试使用以下代码:

int imgRes = activity.getResources().getIdentifier("my_drawable_name", "drawable", activity.getPackageName());

关于android - 无法通过代码动态改变ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204080/

相关文章:

android - 将 .setOnTouchListener() 分配给 xml 中定义的布局

android - 无法让应用程序找到 android.support.v7,找不到 appcompat_v7 项目

android - 处理 GCM 客户端中的注册 ID 更改

android - ADB touchevent 不依赖于计算机工作

java - Android给ImageView添加边框图片

java - 在 WebView 上加载 URL 之前无法加载图像

android - 如何正确清空ImageView?

android - 在 ListView 中显示 "No Item"消息

android - 如何在android中获取Room数据库的行数?

Android 抽屉导航 Material 设计 – 圆形图像查看个人资料图片