画像のギャラリーを保持するImageView
を作成しようとしています。ユーザー要求にタッチして、次の画像をロードします。次の画像がサーバーで見つからないか、ロードに時間がかかる場合、古い画像を空にする必要があります。
setVisibility(View.GONE)
またはsetVisibility(View.INVISIBLE)
が機能しないのは、非表示/削除になったときにonTouch()
検出を停止するためです(ユーザーは現在の画像にロックされます)。
ImageView
を作成して空のビットマップをロードしたり、現在のビットマップをクリア(削除)するにはどうすればよいですか?
私はいつも使う
imageView.setImageDrawable(null);
試してください:
imageView.setImageResource(0);
これにより、リソースを使用しないように画像ビューが設定されます。
私が気づいたことから、画像をクリアするときの特定の方法の「機能する」かどうかは、ImageViewにデータを取り込むために使用される方法に依存します。
したがって、img.setImageBitmap(bmp)
を設定した場合、クリアするにはimg.setImageBitmap(null)
を使用する必要があります。 img.setImageResource(resId)
をクリアするには、img.setImageResouce(0)
を使用する必要があります。等。
確かにimageView.setImageResource(0)は機能します。それは私にとって決して失敗したことはなく、私は何度も使ってきました。
setImageResourceには通常、参照R.drawable(画像の参照)が渡されます。これはintとして保存されますが、R.Javaクラスでは16進値0xf2fsとして表示されます...画像。後で同じ画像ビューを渡すと、存在しない参照が古い画像に表示されなくなります。したがって、0、5、またはR.Javaクラスで参照されているリソースと一致しないintを渡すと、imageViewのsrcから画像が完全に削除されます。したがって、imageViewの古い参照に0を渡す場合。