如何返回原始ImageView资源?

时间:2014-02-21 19:36:39

标签: android

我在布局文件中定义了ImageView,如:

  android:src="@drawable/ic_home"

在我的应用程序工作流程中,我使用

多次更改资源
  iv.setImageResource(some_id);

但是如果出现问题我想恢复原始资源。这里没有类似ImageView.resetToDefault()的方法,除了在我的程序中保留原始资源ID并且在需要返回图像时设置它,我没有看到任何其他方法。但是,如果我决定更改附加到图像视图的资源,我每次都需要修改我的代码。所以,如果有人知道更优雅的解决方案,请告诉我。

PS我可以看到类似的问题没有答案,所以看起来Android设计缺乏。

伙计们,这样的工作怎么样?我将两个图像视图堆叠起来。因此,我的图像在顶部是XML定义不可见的。当我需要更新图像时,我只是让它可见并重新加载图像。当我想要图像默认时,我只是隐藏它。让我尝试。

2 个答案:

答案 0 :(得分:1)

在视图膨胀或设置后,以编程方式设置ImageView资源。

defaultImageId = R.drawable.ic_home;
ImageView iv = (ImageView) findViewById(R.layout.my_image_view);
iv.setImageResource(defaultImageId);

//.... sometime later when you want to reset back to the "default"
iv.setImageResource(defaultImageId);

编辑:

如果您坚持仅将资源ID保留在XML中,则ImageView不允许将其置于当前状态。您必须自己扩展它并提供功能。请参阅下面的要点以获取一个工作示例。 (我测试过了。)

https://gist.github.com/enragedmrt/9143603

答案 1 :(得分:1)

尽管Enragedmrt提供了一个很棒的解决方案,但我仍然可以通过以下方式进行解决:

     <ImageView
    android:id="@+id/img_orig"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_default" />

<ImageView
    android:id="@+id/img_towork"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"

    android:src="@drawable/ic_default" />

因此,当我想设置为默认值时,我只需执行iv.setVisibility(View.INVISIBLE);