web-dev-qa-db-ja.com

画像を画像ビューから削除するAndroid

画像のギャラリーを保持するImageViewを作成しようとしています。ユーザー要求にタッチして、次の画像をロードします。次の画像がサーバーで見つからないか、ロードに時間がかかる場合、古い画像を空にする必要があります。

setVisibility(View.GONE)またはsetVisibility(View.INVISIBLE)が機能しないのは、非表示/削除になったときにonTouch()検出を停止するためです(ユーザーは現在の画像にロックされます)。

ImageViewを作成して空のビットマップをロードしたり、現在のビットマップをクリア(削除)するにはどうすればよいですか?

99
ChyBy

私はいつも使う

imageView.setImageDrawable(null);
367
tristan2468

試してください:

imageView.setImageResource(0);

これにより、リソースを使用しないように画像ビューが設定されます。

6
Ribose

私が気づいたことから、画像をクリアするときの特定の方法の「機能する」かどうかは、ImageViewにデータを取り込むために使用される方法に依存します。

したがって、img.setImageBitmap(bmp)を設定した場合、クリアするにはimg.setImageBitmap(null)を使用する必要があります。 img.setImageResource(resId)をクリアするには、img.setImageResouce(0)を使用する必要があります。等。

5
Variag

確かにimageView.setImageResource(0)は機能します。それは私にとって決して失敗したことはなく、私は何度も使ってきました。

setImageResourceには通常、参照R.drawable(画像の参照)が渡されます。これはintとして保存されますが、R.Javaクラスでは16進値0xf2fsとして表示されます...画像。後で同じ画像ビューを渡すと、存在しない参照が古い画像に表示されなくなります。したがって、0、5、またはR.Javaクラスで参照されているリソースと一致しないintを渡すと、imageViewのsrcから画像が完全に削除されます。したがって、imageViewの古い参照に0を渡す場合。

5
james