我想明白,为什么我不能从我的 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/