无法通过代码动态更改ImageView

时间:2015-08-25 12:30:05

标签: 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从我的活动传递到我的适配器。我从这个适配器执行此操作,该适配器是我的imageView实例。

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

2 个答案:

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