我在布局文件中定义了ImageView,如:
android:src="@drawable/ic_home"
在我的应用程序工作流程中,我使用
多次更改资源 iv.setImageResource(some_id);
但是如果出现问题我想恢复原始资源。这里没有类似ImageView.resetToDefault()
的方法,除了在我的程序中保留原始资源ID并且在需要返回图像时设置它,我没有看到任何其他方法。但是,如果我决定更改附加到图像视图的资源,我每次都需要修改我的代码。所以,如果有人知道更优雅的解决方案,请告诉我。
PS我可以看到类似的问题没有答案,所以看起来Android设计缺乏。
伙计们,这样的工作怎么样?我将两个图像视图堆叠起来。因此,我的图像在顶部是XML定义不可见的。当我需要更新图像时,我只是让它可见并重新加载图像。当我想要图像默认时,我只是隐藏它。让我尝试。
答案 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不允许将其置于当前状态。您必须自己扩展它并提供功能。请参阅下面的要点以获取一个工作示例。 (我测试过了。)
答案 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);