我想了解,为什么我无法从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从我的活动传递到我的适配器。我从这个适配器执行此操作,该适配器是我的imageView实例。
所以我尝试更改此资源my_drawable_name,但在上述两种情况下,我的imageView永远不会更新/刷新,并且其图像资源不会更改。我没有错误它只是没有工作。难道我做错了什么 ?通过代码从imageview动态更改资源的最佳做法是什么?
答案 0 :(得分:1)
无需附加drawable目录。这是android的默认行为,可根据设备获得最适合的drawable。
尝试使用以下代码:
int imgRes = activity.getResources().getIdentifier("my_drawable_name", "drawable", activity.getPackageName());
答案 1 :(得分:0)
尝试imageIcon.setImageResource(R.drawable.my_drawable_name);