私は自分のディスプレイにImageView
sを再利用していますが、ある時点でそれを入れる値がありません。
それではどのようにAndroidでImageView
をクリアするのですか?
私はもう試した:
mPhotoView.invalidate();
mPhotoView.setImageBitmap(null);
それらのどれもビューをクリアしていません、それはまだ前の画像を示しています。
私は dennis.sheppard という解決策でそれをやっていました:
viewToUse.setImageResource(0);
動作しますが、ドキュメント化されていないので、ビュー内で何か他のものに影響するかどうかはあまり明確ではありません( ImageViewコード を確認できます。 t).
私は最善の解決策だと思います:
viewToUse.setImageResource(Android.R.color.transparent);
私はこの解決策が大好きなので、状態を元に戻すのに難しいことは何もないし、それが何をしているのかも明らかだ。
私は基本的に画面から完全にImageViewsを削除する必要があるという同様の問題を抱えていました。ここでの答えのいくつかは私を正しい方向へ導きました、しかし結局setImageDrawable()を呼び出すことは私のために働きました:
imgView.setImageDrawable(null);
(コメントで述べたように、そのような用法は公式文書に文書化されています: ImageView#setImageDrawable 。)
私はこれが古いことを知っていますが、私はこれを達成することができました
viewToUse.setImageResource(0);
それがうまくいくようには思えませんが、私は気まぐれにそれを試してみました、そしてそれは完全にうまくいきました。
別の画像が表示されていないときに、ImageViewをデフォルトの画像に設定するのが望ましいようです。これがContactsアプリケーションのやり方です。
if (photoId == 0) {
viewToUse.setImageResource(R.drawable.ic_contact_list_picture);
} else {
// ... here is where they set an actual image ...
}
ImageViewでImageとDrawableCacheをクリアするためにこれを試しました
ImgView.setImageBitmap(null);
ImgView.destroyDrawingCache();
私はこれがあなたのために働くことを願っています!
これらの解決策のいずれも、すでに設定した画像(特にsetImageResource(0)
またはsetImageResources(Android.R.color.transparent)
)をクリアしていない場合は、setBackgroundDrawable(...)
などを使用して現在の画像が背景として設定されていないことを確認してください。
あなたのコードは前景の画像リソースをあなたが設定したその背景画像の前で透明な何かに設定するだけで、それでも表示されます。
ちょっと私は私がこの答えに非常に遅れているのを知っている、しかし私はこれを共有しなければならないとちょうど思った
イメージをリセットするときに呼び出すメソッドは、uがイメージを設定しているときに呼び出したメソッドと同じである必要があります。
Uをリセットしたいときはimage source @ dennis.sheepard答えは元々uがsetImageResource()
を使ってビットマップに画像を設定している場合にのみうまくいきます。
例えば、
私はsetImageBitmap()
を使っていたのでsetImageResource(0)
の設定はうまくいきませんでした、代わりにsetImageBitmap(null)
を使いました。
Drawableを定義することでこれを達成できました(blank_white_shape.xmlのようなもの):
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="@Android:color/white"/>
</shape>
それから私はちょうど私が呼び出す画像ビューをクリアしたいとき
imageView.setImage(R.drawable.blank_white_shape);
これは私のために美しく働きます!
kwasi が書いていて gol が編集しているので、白の代わりにtransparentを使うことができます。
ファイルdrawable/transparent.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<solid Android:color="@Android:color/transparent"/>
</shape>
アクティビティ、ビューなどの中
view.setImageResource(R.drawable.transparent);
ListViewアイテムの画像では、「画像なし」の場合のリストアダプタでImageView.setVisibility(View.INVISIBLE)
またはImageView.setImageBitmap(null)
を設定できます。
同じ問題に直面していた私は、ビューの背景色をレイアウトの背景色に変更しました。
edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));
//それから画像を設定する
edit_countflag.setImageResource(R.drawable.flag_id);
ImageViewで画像を削除するには:title_image.setImageResource(-1);
わたしにはできる
サポートライブラリを使用すると、すべてのデバイスでsetImageResource(0)
をサポートするAppCompatImageView
の代わりにImageView
が得られるので、setImageDrawable(null)
およびsetImageBitmap(null)
を使用するのと同じ方法でそれを使用して問題ないはずです。
そうでなければ、それはいくつかのAndroidのバージョンから始めてうまくいくはずです。 Androidのコードによると私のテストによると、私はAndroid API 22(5.1)のsetImageResource(0)
を使うのが安全であるべきだと思います。 API 22とAndroid 21のAndroidコードを見ることができます ここ
これは私のために働きます。
emoji.setBackground(null);
これは実行時にクラッシュします。
viewToUse.setImageResource(Android.R.color.transparent);